Я новичок в гибернации. Было бы здорово, если бы кто-нибудь мог прокомментировать следующий запрос, который у меня есть:
Скажем, у меня есть родительский класс, и у каждого родителя есть несколько детей. Таким образом, файл сопоставления родительского класса будет выглядеть примерно так:
родитель.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 в качестве поставщика кеша 2-го уровня. Я пытался найти ответ на этот вопрос, но не нашел ответа в этом направлении. Более разумно использовать org.demo.children, но я не знаю, в каких сценариях следует использовать отдельную область кеша для ассоциаций/наборов/коллекций, как в приведенном выше случае. Пожалуйста, предоставьте свои комментарии, а также дайте мне знать, если я не уверен в своем вопросе.
Спасибо всем.