hibernet的缓存和级联
来源:互联网 发布:域名微信分享防封技术 编辑:程序博客网 时间:2024/06/05 01:56
[java] view plaincopyprint?
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse - Hibernate Tools
- -->
- <hibernate-mapping>
- <class name="hibernate.bean.PxDept" table="px_dept" schema="dbo"
- catalog="test">
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Mapping file autogenerated by MyEclipse - Hibernate Tools--><hibernate-mapping><class name="hibernate.bean.PxDept" table="px_dept" schema="dbo"catalog="test">
- <cache region="read-write"/>
- <id name="deptId" type="integer">
- <column name="dept_id" />
- <generator class="identity" />
- </id>
- <many-to-one name="pxDept"class="hibernate.bean.PxDept"
- insert="false" update="false">
- <column name="parent_id" />
- </many-to-one>
- <property name="parentDeptId" type="integer">
- <column name="parent_id" />
- </property>
- <property name="deptName" type="string" >
- <column name="dept_name" length="256" not-null="true" />
- </property>
- <set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="true">
- <cache usage="read-write"/>
- <key>
- <column name="dept_id" not-null="true" />
- </key>
- <one-to-many class="hibernate.bean.PxEmployee" />
- </set>
- </class>
- </hibernate-mapping>
- 我使用以下查询:
[java] view plaincopyprint?
- <cache region="read-write"/>
- <id name="deptId" type="integer">
- <column name="dept_id" />
- <generator class="identity" />
- </id>
- <many-to-one name="pxDept" class="hibernate.bean.PxDept"
- insert="false" update="false">
- <column name="parent_id" />
- </many-to-one>
- <property name="parentDeptId" type="integer">
- <column name="parent_id" />
- </property>
- <property name="deptName" type="string" >
- <column name="dept_name" length="256" not-null="true" />
- </property>
- <set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="true">
- <cache usage="read-write"/>
- <key>
- <column name="dept_id" not-null="true" />
- </key>
- <one-to-many class="hibernate.bean.PxEmployee" />
- </set>
- </class>
- </hibernate-mapping>
- 我使用以下查询:
<cache region="read-write"/> <id name="deptId" type="integer"><column name="dept_id" /><generator class="identity" /></id><many-to-one name="pxDept" class="hibernate.bean.PxDept"insert="false" update="false"><column name="parent_id" /></many-to-one><property name="parentDeptId" type="integer"><column name="parent_id" /></property><property name="deptName" type="string" ><column name="dept_name" length="256" not-null="true" /></property><set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="true"><cache usage="read-write"/><key><column name="dept_id" not-null="true" /></key><one-to-many class="hibernate.bean.PxEmployee" /></set></class></hibernate-mapping>我使用以下查询:
- (1)List list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
[java] view plaincopyprint?
- (1)List list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
(1)List list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
- (2)list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
[java] view plaincopyprint?
- (2)list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
(2)list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();
- 在(2)中的list结果是从缓存中取的,但里边PxDept对象中的关联对象pxEmployees集合是空的
[java] view plaincopyprint?
- 在(2)中的list结果是从缓存中取的,但里边PxDept对象中的关联对象pxEmployees集合是空的
在(2)中的list结果是从缓存中取的,但里边PxDept对象中的关联对象pxEmployees集合是空的
[java] view plaincopyprint?
- 下面我面又另一种方式:
下面我面又另一种方式:
[java] view plaincopyprint?
- 将PxDept.hbm.xml中的关联关系改下
将PxDept.hbm.xml中的关联关系改下
- <set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="false">
- <cache usage="read-write"/>
- <key>
- <column name="dept_id" not-null="true" />
- </key>
- <one-to-many class="hibernate.bean.PxEmployee" />
- </set>
[java] view plaincopyprint?
- <set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="false">
- <cache usage="read-write"/>
- <key>
- <column name="dept_id" not-null="true" />
- </key>
- <one-to-many class="hibernate.bean.PxEmployee" />
- </set>
<set name="pxEmployees" inverse="true" cascade="delete" batch-size="8" lazy="false"><cache usage="read-write"/><key><column name="dept_id" not-null="true" /></key><one-to-many class="hibernate.bean.PxEmployee" /></set>
[java] view plaincopyprint?
- lazy="false"
lazy="false"
- <PRE class=java name="code">(1)List list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();</PRE>
- <PRE class=java name="code">(2)list = session.createQuery("from PxDept as p1 left join fetch p1.pxEmployees").setCacheable(true).list();</PRE>
- <PRE class=java name="code">这会在(2)中的list 中的pxDept中的pxEmployees集合就有数据了,请问 这什么怎么回事???
- </PRE>