hibernate读书篇2
主控方:(即父亲一方)
<set
name="addresses"
table="t_address"
lazy="false"
inverse="false"
cascade="all"
sort="unsorted"
order-by="zipcode asc">
<key column="user_id"><!--< span="" /-->key>
<one-to-many class="org.hibernate.sample.TAddress"
/>
<!--< span="" /-->set>
被动方(Taddress)的记录由Hibernate 负责读取,之后存放在主控方指定的Collection类型属性中。
双向一对多关联:
主控端:
<set
name="addresses"
table="t_address"
lazy="false"
inverse="true" ①将这个属性设置为TRUE即可
cascade="all"
sort="unsorted"
order-by="zipcode asc">
<key column="user_id" ><!--< span="" /-->key>
<one-to-many class="org.hibernate.sample.TAddress"
/>
<!--< span="" /-->set>
被控端:
<many-to-one
name="user" ①
class="org.hibernate.sample.TUser"
cascade="none"
outer-join="auto"
update="true"
insert="true"
access="property"
column="user_id"
not-null="true"
/>
多对多关系:
主控端:
<set
name="roles"
table="t_group_role" ①
lazy="false"
inverse="false"
cascade="save-update" ②
>
<key column="group_id" ③>
<!--< span="" /-->key>
<many-to-many class="org.hibernate.sample.TRole"
column="role_id" ④/>
<!--< span="" /-->set>
被控端:
<set
name="groups"
table="t_group_role"
lazy="false"
inverse="true"
cascade="save-update"
sort="unsorted">
<key column="role_id"><!--< span="" /-->key>
<many-to-many
class="org.hibernate.sample.TGroup"
column="group_id"
outer-join="auto"/>
14)TUser user = (TUser)session.load(TUser.class,new Integer(1));
15)悲观锁:用FOR UPDATE
String hqlStr ="from TUser as user where user.name='Erica'";
Query query = session.createQuery(hqlStr);
query.setLockMode("user",LockMode.UPGRADE); //加锁
List userList = query.list();//执行查询,获取数据
16)乐观锁:用版本控制
<class
name="org.hibernate.sample.TUser"
table="t_user"
dynamic-update="true"
dynamic-insert="true"
optimistic-lock="version"
>
……
<!--< span="" /-->class>
事务主要包括JTA事务,JDBC事务
1)Session.load(对象类,ID)直接读取对象
2)Session.get(对象类,ID)直接读取对象,如果对象不能知道是否存在,如果不存在返回NULL
3)Session.iterate(HQL)直接返回一个ITERATOR接口的对象实例
4)Query q = Session.createQuery(HQL), List result =q.list();得到LIST结果集
5)Criteria crit = session.createCriteria(Cat.class);条件查询
crit.add( Expression.eq("color", eg.Color.BLACK) );
crit.setMaxResults(10);
List cats = crit.list();