Professional Documents
Culture Documents
Hibernate
Hibernate
Mc lc
Contents
1. Khi nim............................................................................................................3
1.1
1.2
1.3
2. Ci t v s dng .............................................................................................5
2.1
Ci t ............................................................................................................5
2.2
S dng ..........................................................................................................5
hibernate.cfg.xml ...........................................................................................6
3.2
Hibernate.properties ......................................................................................7
Cu trc c bn ..............................................................................................8
4.2
4.3
4.4
4.5
Cascading action..........................................................................................13
5. org.hibernate.cfg.Configuration .....................................................................14
5.1
Configure() ..................................................................................................14
5.2
5.3
5.4
setProperties(java.util.Properties) ...............................................................14
1
6. org.hibernate.Session.......................................................................................14
6.1
6.2
6.3
lock()............................................................................................................15
6.4
6.5
Insert ............................................................................................................17
6.6
Delete ...........................................................................................................18
6.7
7. Transaction .......................................................................................................19
7.1
7.2
7.3
8. HQL...................................................................................................................22
8.1
8.2
Mnh as...................................................................................................24
8.3
8.4
8.5
Cc hm tp hp ca HQL ..........................................................................27
8.6
8.7
1. Khi nim
1.1 ORM Framework
Framework l mt khi nim trong pht trin phn mm dng
2. Ci t v s dng
2.1 Ci t
Vic ci t Hibernate rt n gin. Hibernate c build
1 tp tin JAR).
Thm cc thnh phn lin quan ca Hibernate vo classpath.
2.2 S dng
Vic s dng Hibernate cng rt n gin. Bn cn g mt
SQL Dialects.
Miscellaneous configuration.
3. Cc tp tin config
3.1 hibernate.cfg.xml
Tp tin ny bt u bng th <hibernate-configuration> v kt
thc vi th </hibernate-configuration>.
Th <session-factory> l th con ca th <hibernate-
show_sql
Dialect
hibernate.hbm2ddl.auto
<property
name=hibernate.connection.driver_class>
com.mysql.jdbc.Driver
</property>
-
3.2 Hibernate.properties
</hibernate-mapping>.
Tng bng trong CSDL c inh ngha bng th <class> v
object).
o column: l tn ca ct trong CSDL.
o type: l kiu d liu ca ct. Ch : y l mt kiu
name="id"
type="java.lang.Long"
unsave-value="null" >
<column
name="FORUM_ID"
not-null="true"
sql-type="INTEGER"
/>
<generator class="identity">
</generator>
</id>
<property
name="forumSubject"
type="java.lang.String"
update="true"
insert="true"
>
<column
name="FORUM_SUBJECT"
not-null="true"
sql-type="VARCHAR(50)"
/>
</property>
<!
Tiep tuc...
-->
</class>
10
ca CAT:
<bag
name="forumList"
lazy="true"
cascade="save-update"
>
<key
column="CAT_ID"
>
</key>
<one-to-many
class="vn.huflit.diendan.model.Forum"
/>
</bag>
11
One-to-many
Many-to-one
o th hin rng mt TOPIC thuc mt FORUM, v
V d:
<many-to-one
name="forumId"
class="vn.huflit.diendan.model.Forum"
12
cascade="none"
outer-join="auto"
update="true"
insert="true"
>
<column
name="FORUM_ID"
not-null="true"
sql-type="INTEGER"
/>
</many-to-one>
4.5 Cascading action
V cc thuc tnh cascade trong cc th bn trn, ngha n
13
5. org.hibernate.cfg.Configuration
5.1 Configure()
//open a session
Session session = sessionFactory.openSession();
//begin a transaction
Transaction tx = session.beginTransaction();
//
//do sth with session here
14
//
//commit
tx.commit();
//close session
session.close();
6.2 Rt trch mt persistence object bng id
session2
sessionFactory.openSession();
//anotherSession
session2.lock(user, LockMode.NONE); //reassociated
6.4 Updating persistence objects
Cc i tng c rt trch bi phng thc session.load() hay
session.get() c kt hp vi CSDL. Chng ta ch cn set
nhng gi tr mi v commit ci transaction update. Objects that
are reassociated are also the same.
V d:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = (User) session.get(User.class, new Long(100));
user.setName(ABC);
tx.commit();
session.close();
16
6.5 Insert
17
6.6 Delete
delete mt dng trong CSDL, ta phi a ra mt i tng tng
ng vi bng trong CSDL. Nhng ta khng cn phi a ht gi tr vo
cc thuc tnh ca i tng, ta ch cn set ci id ca i tng.
Phng thc ny s nm ra mt ngoi l (StaleStateException) khi ta
mun xa mt i tng c id m id ny ko tn ti trong CSDL.
V d:
User user = new User();
User.setId(100);
Session session = sessionFactory.openSession();
18
Transaction tx = session.beginTransaction();
session.delete(user);
tx.commit();
session.close();
7. Transaction
7.1 Understanding database transactions
Mt database transaction nhm cc thao tc truy cp d liu. Mt
transaction s kt thc bng mt trong 2 cch sau y: committed hoc
rolled back.
Nu c nhiu thao tc d liu c thc thi trong mt transaction, bn
phi nh du chc chn cho tng cng vic. Bn phi start transaction,
v 1 vi thi im, phi commit nhng thay i. Nu c li xy ra
(trong qu trnh thc thi cc thao tc hay trong lc ang commit nhng
thay i), bn phi roll back transaction a d liu tr v tnh trng
thch hp. Vic ny cn c gi l transaction demarcation.
Minh ha: tnh trng trong qu trnh ca mt transaction
19
20
concludeAuction();
tx.commit();
} catch (Exception e) {
if (tx != null) {
try {
tx.rollback();
}catch (HibernateException he) {
// log he and rethrow e
}
}
throw e;
} finally {
try {
session.close();
} catch (HibernateException he) {
throw he;
}
}
Vic gi session.beginTransaction() l nh du im bt u ca mt mt
database transaction. Trong trng hp l mi trng non-managed th
JDBC transaction s bt u trn JDBC connection. Cn trong mi trng
managed, n s bt u mt JTA transaction mi nu cha c tn ti JTA
transaction, hoc l kt hp vi JTA transaction tn ti. Tt c vic ny
u c qun l bi Hibernate, nn bn khng cn phi quan tm n vn
n ny.
Vic gi tx.commit() ng thi thay i tnh trng Session i vi c s
d liu. Hibernate s commit transaction bn di khi v ch khi
beginTransaction() bt u mt transaction mi. Nu beginTransaction()
21
8. HQL
HQL l mt thay th tuyt vi cho SQL khi bn ang pht trin ng dng hng
i tng tng tc vi mt c s d liu quan h thng qua Hibernate.
HQL khng phi l mt thay th cho SQL. Thay vo , n cho php chng ta th
hin cc truy vn di hnh thc hng i tng. Khi mt biu thc HQL c thc
thi, u tin n chuyn i thnh mt cu lnh SQL, SQL c to ra sau c
thc hin i vi c s d liu, kt qu c t trong cc i tng lin tc, v cc
i tng c tr li cho ng dng. Hnh di y m t kch bn ny:
8.2 Mnh as
Hnh thc n gin nht ca mt biu thc HQL, trong bao gm ch
mt mnh from v i theo sau l tn lp (classname), l truy vn
tt c cc thc th persistent ca mt lp c th. Tuy nhin, trong nhiu
tnh hung, ng dng cn mt tp con ca cc i tng ph hp vi tp
hp cc tiu chun, thay v ton b cc thc th. Trong tnh hung nh
vy, bn cn phi gn mt b danh cho tp cha cc i tng, v vy bn c
th tham chiu tr li chng trong cc phn khc ca cu truy vn, chng
hn nh truy vn y . Vi mc ch ny, bn s dng mnh as trong
biu thc HQL, nh trong SQL.
V d, load tt c cc i tng Teacher vi tui 30, bn s dng mnh
as trong biu thc HQL (nh sau) gn b danh teacher cho persistent
Teacher
from Teacher as teacher where teacher.age=30
Nh bn c th thy, b danh teacher cho php chng ta tham chiu tr li
cc i tng trong mnh where gii hn kt qu (ta s ni mnh
where sau, trong v d ny th kh r rng khng cn gii thch thm). Cc
t kha as l ty chn. N ch cung cp mt cm gic quen thuc cho cc
developer c kinh nghim vi SQL. V vy, biu thc HQL ny s c
th hin nh sau:
from Teacher teacher where teacher.age=30
Cc biu thc truy vn c th bao gm nhiu lp. Mi lp s c b danh
ring ca n, v d:
from Teacher as teacher, Student as student
24
Description
Inner Join
Cross Join
Full Join
25
26
Cc ton t /Cc hm
Cc k hiu
Ton t ton hc
+, -, *, /
Ton t so snh
Ton t logic
28
Ton t nhm
Scalar database-supported
functions
Cc hm Collection-valued
minelement(), maxelement(),
minindex(), maxindex()
current_date(), current_time(),
current_timestamp(), second(),
minute(), hour(), day(), month(),
year()
Nu c s d liu c bn h tr n th bn c th s dng cc hm gp nh
mnh having hay order by.
*Lu : Khng mnh group by cng khng mnh order by c th cha
cc biu thc s hc
30