Мне интересно, где кэш второго уровня гибернации работает, как и ожидалось, если я добавлю предложение where в определение класса hbm.xml:
<hibernate-mapping>
<class name="com.clazzes.A" table="TABLE_A"
mutable="false" where="xyz=5" >
<cache usage="read-only"/>
<id name="id" />
...
Будет ли Hibernate по-прежнему помещать идентификатор в качестве ключа в кэш, или я должен включить кэш запросов? Например. когда я затем выполняю запрос HQL, такой как from A where id=2
, который приводит к SQL, похожему на select * from TABLE_A where id=2 and (xyz=5)
. Если я выполню этот запрос дважды, будет ли он рассматривать кэш второго уровня или, тем не менее, будет выполнять SQL дважды?