在L2 ehcache中为JPA / hibernate / Spring缓存JPQL查询

时间:2014-01-24 18:59:57

标签: java hibernate caching jpa jpql

我在persistence.xml中设置了二级缓存,并配置了需要缓存的每个实体,如下所示:

的persistence.xml:

<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
      <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
      <property name="hibernate.cache.use_second_level_cache" value="true"/>
      <property name="hibernate.cache.use_query_cache" value="true"/>
 </properties>

实体:

@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)

我有一个JPQL查询,它引用的所有实体都标记为可缓存,不知怎的,我一直在访问数据库,而不是从缓存中获取它。

目前ehcache.xml具有以下内容:

<defaultCache eternal="false" maxElementsInMemory="100000"
    overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
    timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LRU"/>


   <cache
        name="org.hibernate.cache.StandardQueryCache"
        maxEntriesLocalHeap="10000"
        eternal="false"
        timeToLiveSeconds="3600"
        memoryStoreEvictionPolicy="LRU"/>

如何让JPQL查询代替缓存?看起来直接的hibernate查询有这个setCacheable,但在JPQL中没有这个..

任何帮助表示感谢。

格雷格

0 个答案:

没有答案