Java 确定二级缓存是否在hibernate中工作时出现问题

Java 确定二级缓存是否在hibernate中工作时出现问题,java,hibernate,ehcache,second-level-cache,Java,Hibernate,Ehcache,Second Level Cache,我正在尝试在我的项目中使用ehcache。。我在hibernate配置文件中指定了以下属性- config.setProperty(“hibernate.cache.provider_class”,“org.hibernate.cache.EhCacheProvider”); config.setProperty(“hibernate.cache.provider\u configuration\u file\u resource\u path”、“ehcache.xml”); config.s

我正在尝试在我的项目中使用ehcache。。我在hibernate配置文件中指定了以下属性-

config.setProperty(“hibernate.cache.provider_class”,“org.hibernate.cache.EhCacheProvider”); config.setProperty(“hibernate.cache.provider\u configuration\u file\u resource\u path”、“ehcache.xml”); config.setProperty(“hibernate.cache.use_second_level_cache”,“true”); config.setProperty(“hibernate.cache.use_query_cache”,“true”)

现在我仍然不确定结果是来自DB还是缓存

我环顾四周,发现-在那里,有人建议使用命中率/错误计数API 但是,当我尝试使用它时,命中计数和未命中计数总是返回0。。。这是我的代码

String rName=“org.hibernate.cache.UpdateTimestampsCache”; 统计数据= HibernateHelper.getInstance().getFactory().getStatistics(); 长期失算= stat.getSecondLevelCacheStatistics(rName).getMissCount(); 长命中率= stat.getSecondLevelCacheStatistics(rName).getHitCount(); UserDAO user=newuserdao(); user.read(新长(1));长的 新错误计数= stat.getSecondLevelCacheStatistics(rName).getMissCount(); 长新点击数= stat.getSecondLevelCacheStatistics(rName).getHitCount()

如果(oldHitCount+1==newHitCount&& oldMissCount+1==newMissCount){ System.out.println(“来自DB”);} 如果(oldHitCount+1==newHitCount &&oldMissCount==newMissCount){
System.out.println(“来自缓存”); }

如果我用错了,请告诉我。。在这种情况下,rName(区域名称)应该是什么

是否有其他方法确定二级缓存是否工作


谢谢

您需要启用统计信息收集:

config.setProperty("hibernate.generate_statistics", "true");

我还设置了该属性。。。但命中率仍然没有增加。。还是0。。还有什么我可能错过的吗?@Juzer:试着调用
getStatistics().logSummary()
。其他值不是-0吗?