我有一个配置为使用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());
}
}
Run Code Online (Sandbox Code Playgroud)
简短的答案 - 调试器。
在加载实体的位置放置一个断点,然后沿着堆栈向下跟踪它。查看它是否尝试从 EHCache 获取对象。另外,检查从数据库获取数据后是否尝试将其放入缓存中。
| 归档时间: |
|
| 查看次数: |
4268 次 |
| 最近记录: |