Hibernate 查询缓存大小和过期时间可配置?

Hibernate query cache size and expiration configurable?

在一个 Web 应用程序中,我在 Hibernate 4.1.4 中配置了查询和二级缓存:

<!-- Cache -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<property name="net.sf.ehcache.configurationResourceName">resources/ehcache.xml</property>
<property name="hibernate.cache.use_query_cache">true</property>

一切正常。在文件 ehcache.xml 中,我可以配置二级缓存的大小和分配:

<ehcache>
 <diskStore path="java.io.tmpdir"/>
 <defaultCache
 maxElementsInMemory="30000"
 eternal="false"
 timeToIdleSeconds="600"
 timeToLiveSeconds="600"
 overflowToDisk="false"
 maxElementsOnDisk="10000000"
 diskPersistent="false"
 diskExpiryThreadIntervalSeconds="120"
 memoryStoreEvictionPolicy="LRU"/>
</ehcache>

但是查询缓存呢?存储了多少不同的查询?还有多久过期?

我正在调整这个,想同步二级缓存和查询缓存过期时间,但是如何? 提前致谢。

默认情况下查询缓存的名称是org.hibernate.cache.StandardQueryCache

所以你可以像这样添加一个条目:

<cache name="org.hibernate.cache.StandardQueryCache"
    ...
    timeToIdleSeconds=...        
    timeToLiveSeconds=...>
        <persistence strategy="localTempSwap"/>
</cache>