1. TUser与TOrder 一对多关系
xml代码
<class name="TUser" table="t_user" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="user_name" />
</property>
<set name="orders" inverse="true" cascade="all-delete-orphan" fetch="join" lazy="false">
<key column="USER_ID"></key>
<one-to-many class="TOrder"/>
</set>
</class>
<class name="TOrder" table="t_order" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="orderName" type="java.lang.String">
<column name="ORDER_NAME" length="20" />
</property>
<many-to-one name="user" class="TUser" >
<column name="USER_ID"></column>
</many-to-one>
</class>
2. 测试
(1) List list = session.createQuery("from TUser").list();
(2) List list = session.createQuery("from TUser where id=3 ").list();
(3) TUser u = (TUser)session.get(TUser.class, new Long(3));
3. 结论:
(1) fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。
该定义在条件查询中无效。
(2) lazy=true 或false对join fetch没有任何影响, 均会使用左外连接。
xml代码
<class name="TUser" table="t_user" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="user_name" />
</property>
<set name="orders" inverse="true" cascade="all-delete-orphan" fetch="join" lazy="false">
<key column="USER_ID"></key>
<one-to-many class="TOrder"/>
</set>
</class>
<class name="TOrder" table="t_order" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="orderName" type="java.lang.String">
<column name="ORDER_NAME" length="20" />
</property>
<many-to-one name="user" class="TUser" >
<column name="USER_ID"></column>
</many-to-one>
</class>
2. 测试
(1) List list = session.createQuery("from TUser").list();
(2) List list = session.createQuery("from TUser where id=3 ").list();
(3) TUser u = (TUser)session.get(TUser.class, new Long(3));
3. 结论:
(1) fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。
该定义在条件查询中无效。
(2) lazy=true 或false对join fetch没有任何影响, 均会使用左外连接。
本文详细解析了在数据库设计中一对多关系的XML代码表示,并通过实例展示了如何通过Hibernate进行对象获取与操作。重点讨论了fetch策略在条件查询中的应用以及lazy属性对joinfetch的影响。
1183

被折叠的 条评论
为什么被折叠?



