Hibernate кэш второго уровня - результат печати - PullRequest
4 голосов
/ 01 июля 2010

Я определил кэш второго уровня в своем приложении с помощью аннотации @Cache

Я использую запрос findById, как показано ниже:

  long id = 4;    
        Company cmp = companyDAO.findById(id);

Где Company - объект, который я получаюБД.

Как проверить, поступил ли объект Company из БД или из кэша?

Ответы [ 3 ]

6 голосов
/ 01 июля 2010

Как проверить, поступил ли объект Company из БД или из кэша?

Hibernate использует определенную категорию для Записать все действия кэша второго уровня .Соответствующая категория - org.hibernate.cache, просто включите для нее debug в конфигурации вашей системы ведения журналов.

См. Глава 3.5 Ведение журнала .

3 голосов
/ 01 июля 2010

Попробуйте 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");
}
0 голосов
/ 01 июля 2010

Включить ведение журнала кэша.

...