Согласно этой документации, когда Используя Infinispan с Hibernate, можно определить несколько областей кэша и настроить их индивидуально. Я использую WildFly 8.0, который использует Infinispan в качестве поставщика 2LC по умолчанию для Hibernate. Итак, вот моя конфигурация standalone.xml для контейнера кэша спящего режима:
<cache-container name="hibernate" default-cache="local-query" module="org.hibernate">
<local-cache name="entity">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="local-query">
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="timestamps">
<transaction mode="NONE"/>
<eviction strategy="NONE"/>
</local-cache>
</cache-container>
Таким образом, максимальное время простоя установлено на 100 секунд. Вот как я сообщаю Hibernate кешировать запрос:
slotQuery.setHint("org.hibernate.cacheable", true)
.setHint("org.hibernate.cacheRegion", "myRegionName")
.getResultList();
Все работает идеально, запросы кешируются на 100 секунд. Но когда я пытаюсь настроить отдельную область кеша для запроса в persistence.xml:
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.infinispan.myRegionName.expiration.max_idle" value="5000"/>
настройки не переопределяются, и запрос кэшируется на 100 секунд. Что мне здесь не хватает?
hibernate.cache.infinispan.<warname>.<unitname>.<FQN of entity>.expiration.max_idle
. Вы можете это попробовать? - person Galder Zamarreño   schedule 22.04.2014