プロジェクトでehcacheを使用しようとしています。hibernate構成ファイルで次のプロパティを指定しました-
config.setProperty( "hibernate.cache.provider_class"、 "org.hibernate.cache.EhCacheProvider"); config.setProperty( "hibernate.cache.provider_configuration_file_resource_path"、 "ehcache.xml"); config.setProperty( "hibernate.cache.use_second_level_cache"、 "true"); config.setProperty( "hibernate.cache.use_query_cache"、 "true");
結果がDBからのものか、キャッシュからのものかはまだわかりません。
私は周りを見回して、 -Hibernateの第2レベルのキャッシュ- 人がHitCount /MisscountAPIを提案している結果を出力することを発見しました
しかし、私がそれを使おうとすると、ヒットカウントとミスカウントは常に0を返します...これが私のコードです
String rName = "org.hibernate.cache.UpdateTimestampsCache"; 統計統計=HibernateHelper.getInstance()。getFactory()。getStatistics(); long oldMissCount = stat.getSecondLevelCacheStatistics(rName).getMissCount(); long oldHitCount = stat.getSecondLevelCacheStatistics(rName).getHitCount(); UserDAO user = new UserDAO(); user.read(new Long(1)); long newMissCount = stat.getSecondLevelCacheStatistics(rName).getMissCount(); long newHitCount = stat.getSecondLevelCacheStatistics(rName).getHitCount();
if(oldHitCount + 1 == newHitCount && oldMissCount + 1 == newMissCount){System.out.println( "DBから来ました"); } else if(oldHitCount + 1 == newHitCount && oldMissCount == newMissCount){
System.out.println( "キャッシュから取得"); }
間違って使用している場合はお知らせください。この場合、rName(リージョン名)はどうあるべきですか。
2番目のレベルのキャッシュが機能しているかどうかを判断する他の方法はありますか?
ありがとう