我使用 @Cache 注释在我的应用程序中定义了二级缓存
我正在使用 findById 查询,如下所示:
long id = 4;
Company cmp = companyDAO.findById(id);
其中 Company 是我从数据库中获得的对象。
如何检查 Company 对象是来自数据库还是来自缓存?
我使用 @Cache 注释在我的应用程序中定义了二级缓存
我正在使用 findById 查询,如下所示:
long id = 4;
Company cmp = companyDAO.findById(id);
其中 Company 是我从数据库中获得的对象。
如何检查 Company 对象是来自数据库还是来自缓存?
如何检查 Company 对象是来自数据库还是来自缓存?
Hibernate 使用特定的类别来记录所有二级缓存活动。相关类别是,只需在日志框架的配置中为其org.hibernate.cache
启用调试即可。
请参阅第 3.5 章记录。
试试HitCount 和/或 MissCount API。
像这样的东西......
int oldMissCount = sessionFactory.getStatistics().getSecondLevelCacheStatistics(rName).getMissCount();
int oldHitCount = sessionFactory.getStatistics().getSecondLevelCacheStatistics(rName).getHitCount();
long id = 4;
Company cmp = companyDAO.findById(id);
int newMissCount = sessionFactory.getStatistics().getSecondLevelCacheStatistics(rName).getMissCount();
int newHitCount = sessionFactory.getStatistics().getSecondLevelCacheStatistics(rName).getHitCount();
if(oldHitCount+1 == newHitCount && oldMissCount+1 == newMissCount) {
logger.debug("came from DB");
} else if(oldHitCount+1 == newHitCount && oldMissCount == newMissCount) {
logger.debug("came from cache");
}
打开缓存日志记录。