我有一个配置为使用JPA和Hibernate的大型Java应用程序。据推测,它还配置为对实体和查询缓存都使用ehcaching。但是,我已打开sql日志记录,并且没有实体被缓存。所有实体查询都在每个请求上发生。

如何在运行时确定它是否甚至正在运行ehcache,以及它是否认为实体应该可缓存?

我没有写这个应用程序,所以在这里有些卡住了。

它使用声明进行类的缓存。

它正确地使用了Hibernate的所有其他声明来执行读/写操作。

最佳答案

尝试这样的事情:

List<CacheManager> tempManagers = CacheManager.ALL_CACHE_MANAGERS;
System.out.println("# of CMs : " + tempManagers.size());
for (CacheManager tempCM : tempManagers) {
        System.out.println("Got: " + tempCM.getName());
        String[] cacheNames = tempCM.getCacheNames();
        for (int i = 0; i < cacheNames.length; i++) {
            String cacheName = cacheNames[i];
            System.out.println(cacheName+" - "+ tempCM.getEhcache(cacheName).getStatistics().toString());
        }
}

10-04 23:26