我是冬眠的新手。如果有人可以评论我的以下查询,那就太好了:
假设我有一个父类,每个父母都有多个孩子。所以父类的映射文件会是这样的:
父.hbm.xml
<hibernate-mapping >
<class name="org.demo.parent" table="parent" lazy="true">
<cache usage="read-write" region="org.demo.parent"/>
<id name="id" column="id" type="integer" length="10">
<generator class="native">
</generator>
</id>
<property name="name" column="name" type="string" length="50"/>
<set name="children" lazy="true">
<cache usage="read-write" region="org.demo.parent.children" />
<key column="parent_id"/>
<one-to-many class="org.demo.children"/>
</set>
</class>
</hibernate-mapping>
儿童.hbm.xml
<hibernate-mapping >
<class name="org.demo.children" table="children" lazy="true">
<cache usage="read-write" region="org.demo.children"/>
<id name="id" column="id" type="integer" length="10">
<generator class="native">
</generator>
</id>
<property name="name" column="name" type="string" length="50"/>
<many-to-one name="parent_id" column="parent_id" type="integer" length="10" not-null="true"/>
</class>
</hibernate-mapping>
因此,对于设置的孩子,我们应该指定应该缓存关联的区域 org.demo.parent.children 还是应该使用 org.demo.children 的缓存区域来缓存孩子。
我使用 EHCache 作为二级缓存提供程序。我试图寻找这个问题的答案,但在这个方向上找不到任何答案。使用 org.demo.children 更有意义,但我不知道在哪种情况下应该使用单独的缓存区域进行关联/集合/集合,如上述情况。请提供您的意见,如果我的问题不清楚,请告诉我。
谢谢大家。