Java 冬眠&;EhCache:net.sf.EhCache.Statistics未填充?

Java 冬眠&;EhCache:net.sf.EhCache.Statistics未填充?,java,hibernate,jpa,jakarta-ee,ehcache,Java,Hibernate,Jpa,Jakarta Ee,Ehcache,我认为我的Hibernate(3.5.3)二级缓存已经配置好了EhCache(2.2) 至少,我观察到以下日志条目: 20:15:28 DEBUG [net.sf.ehcache.Cache#searchInStoreWithStats] persistence.unit:unitName=#pu-pay.c.u.p.model.ActionCache: persistence.unit:unitName=#pu-pay.c.u.p.model.Action store hit for c.u.

我认为我的Hibernate(3.5.3)二级缓存已经配置好了EhCache(2.2)

至少,我观察到以下日志条目:

20:15:28 DEBUG [net.sf.ehcache.Cache#searchInStoreWithStats] persistence.unit:unitName=#pu-pay.c.u.p.model.ActionCache: persistence.unit:unitName=#pu-pay.c.u.p.model.Action store hit for c.u.p.model.Action#TRT    
20:15:28 DEBUG [net.sf.ehcache.Cache#searchInStoreWithStats] persistence.unit:unitName=#pu-pay.c.u.p.model.ActionCache: persistence.unit:unitName=#pu-pay.c.u.p.model.Action store hit for c.u.p.model.Action#PID
(…这些“存储命中数”是否真的表明缓存正在工作?)

现在让我困惑的是:

当我检查以下统计数据时:

cacheManager.getCache("persistence.unit:unitName=#pu-pay.c.u.p.model.Action").getStatistics().toString()
。。。我所看到的是:

 name = persistence.unit:unitName=#pu-pay.c.u.p.model.Action cacheHits = 0 onDiskHits = 0 inMemoryHits = 0 misses = 0 size = 0 averageGetTime = 0.0 evictionCount = 0
。。。没有命中,没有未命中,。。。没什么

ehcache.xml
中,我有:

   <defaultCache
        ...
        statistics="true"
        ...
        />

   <cache
        name="persistence.unit:unitName=#pu-pay.c.u.p.model.Action"
        maxElementsInMemory="100"
        eternal="true"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="false"
        statistics="true"
        />

这对任何人都有影响吗?我是否也必须在其他位置启用统计信息


更新:

persistence.xml指定:

        <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
        <property name="hibernate.cache.use_query_cache" value="false"/>
        <property name="hibernate.cache.use_second_level_cache" value="true"/>
        <property name="hibernate.generate_statistics" value="true"/>

奇怪的是,这些调试语句确实意味着您正在访问持久性。unit:unitName=#pu-pay.c.u.p.model.Action缓存…我想知道您的CacheManager是否正确,是否Hibernate提供程序正在使用另一个实例


你的hibernate配置看起来如何?

奇怪的是,这些调试语句确实意味着你对持久性有点击率。unit:unitName=#pu-pay.c.u.p.model.Action缓存…我想知道你的CacheManager是否正确,是否hibernate提供程序正在使用另一个实例


您的hibernate配置是什么样子的?

Thx以获取回复。我没有hibernate配置。(它都是由persistence.xml和JPA注释驱动的。)我在原始问题中添加了persistence.xml片段。好的,因此您使用的是EhCacheRegionFactory,可能是您想要指定特定的ehcache配置文件,如果是这样,您应该设置net.sf.ehcache.configurationResourceName属性。否则,你要找的不是SingletoneCacheRegionFactory吗?你是如何获得cacheManager实例的?很抱歉响应太慢。。。CacheManager CacheManager=CacheManager.getInstance()。。。太明显了?:-)我认为您仍然希望使用SingletoneCacheRegionFactory来实现“正确性”,但这是您应该已经在做的事情,因为您没有正确配置eCacheRegionFactory……您是否可以进行更改并查看它是否有帮助。如果AICT不提供net.sf.ehcache.configurationResourceName道具,它会退回到SingletonEhCacheRegionFactory。是否hibernate是使用其他类加载器引导的?可能是我完全错了,但这感觉就像是两个不同的缓存管理器:你能通过编程方式命中缓存吗?是否记录了统计数据?请点击回复Alex。我没有hibernate配置。(它都是由persistence.xml和JPA注释驱动的。)我在原始问题中添加了persistence.xml片段。好的,因此您使用的是EhCacheRegionFactory,可能是您想要指定特定的ehcache配置文件,如果是这样,您应该设置net.sf.ehcache.configurationResourceName属性。否则,你要找的不是SingletoneCacheRegionFactory吗?你是如何获得cacheManager实例的?很抱歉响应太慢。。。CacheManager CacheManager=CacheManager.getInstance()。。。太明显了?:-)我认为您仍然希望使用SingletoneCacheRegionFactory来实现“正确性”,但这是您应该已经在做的事情,因为您没有正确配置eCacheRegionFactory……您是否可以进行更改并查看它是否有帮助。如果AICT不提供net.sf.ehcache.configurationResourceName道具,它会退回到SingletonEhCacheRegionFactory。是否hibernate是使用其他类加载器引导的?可能是我完全错了,但这感觉就像是两个不同的缓存管理器:你能通过编程方式命中缓存吗?有记录吗?