我在應用程序定義的二級緩存使用@Cache註釋Hibernate的二級緩存 - 打印結果
我使用findById查詢,如下:
long id = 4;
Company cmp = companyDAO.findById(id);
凡公司爲對象,我從數據庫中獲得。
如何檢查公司對象是來自數據庫還是來自緩存?
我在應用程序定義的二級緩存使用@Cache註釋Hibernate的二級緩存 - 打印結果
我使用findById查詢,如下:
long id = 4;
Company cmp = companyDAO.findById(id);
凡公司爲對象,我從數據庫中獲得。
如何檢查公司對象是來自數據庫還是來自緩存?
嘗試HitCount and/or 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");
}
打開緩存記錄。
如何檢查公司對象是來自數據庫還是來自緩存?
Hibernate使用特定類別記錄所有二級緩存活動。相關類別爲org.hibernate.cache
,只需在配置日誌框架時啓用調試即可。
我試過這段代碼,但是misscount和hit count總是返回0 ...我可以做出的任何錯誤?? – Anand 2011-01-02 03:12:28
@Anand你確定你已經啓用了hibernate.cache.use_second_level_cache,hibernate.cache.use_query_cache,hibernate.generate_statistics? http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional – dira 2011-01-04 05:51:36
如何找出實體的區域名稱(rName)? – Sriram 2015-06-26 11:26:23