@Cache アノテーションを使用して、アプリケーションで第 2 レベルのキャッシュを定義しました
次のように、findById クエリを使用しています。
long id = 4;
Company cmp = companyDAO.findById(id);
Company は、DB から取得したオブジェクトです。
Company オブジェクトが DB からのものかキャッシュからのものかを確認するにはどうすればよいですか?
@Cache アノテーションを使用して、アプリケーションで第 2 レベルのキャッシュを定義しました
次のように、findById クエリを使用しています。
long id = 4;
Company cmp = companyDAO.findById(id);
Company は、DB から取得したオブジェクトです。
Company オブジェクトが DB からのものかキャッシュからのものかを確認するにはどうすればよいですか?
Company オブジェクトが DB からのものかキャッシュからのものかを確認するにはどうすればよいですか?
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");
}
キャッシュ ロギングをオンにします。