2011-01-08 98 views
4

我有一个配置为使用JPA和Hibernate的大型java应用程序。它也被认为配置为对实体和查询缓存使用ehcaching。不过,我打开了SQL日志记录,没有实体被缓存。所有的实体查询都发生在每个请求上。如何以编程方式确定ehcache是​​否正在运行?

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

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

它使用类的缓存声明。

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

+0

的Ehcache不 “跑”,这是一个图书馆。你在问什么? – skaffman 2011-01-09 00:38:19

回答

1

简短的回答 - 一个调试器。

把一个断点放在你加载一个实体的地方,并将它放在堆栈中。看看它是否曾尝试从EHCache获取对象。另外,请检查它是否会在从数据库中提取缓存后尝试将其放入缓存中。

+0

我希望避免这种情况,因为我没有下载它等等。似乎我正在使用ehcache 3.3.1版本。但是,我一直无法找到源代码。所以你不认为有一种方法来设置某种日志记录,以便我知道它甚至加载和配置了ehcache? – Andrew 2011-01-09 01:56:26

2

尝试这样:

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()); 
     } 
} 
相关问题