Я пытаюсь использовать 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", "правда");config.setProperty ("hibernate.cache.use_query_cache", "true");
Теперь я все еще не уверен, поступают ли результаты из БД или из кэша ..
Я огляделся и обнаружил - Кэш второго уровня Hibernate - результат печати , где человек предлагает использовать HitCount / Misscount API
Однако, когда я пытался использовать его, счетчик посещений и счетчик пропусков всегда возвращали 0... вот мой код
String rName = "org.hibernate.cache.UpdateTimestampsCache";Статистика stat = HibernateHelper.getInstance (). GetFactory (). GetStatistics ();long oldMissCount = stat.getSecondLevelCacheStatistics (rName) .getMissCount ();long oldHitCount = stat.getSecondLevelCacheStatistics (rName) .getHitCount ();UserDAO user = новый 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 ("пришло из БД");} else if (oldHitCount + 1 == newHitCount && oldMissCount == newMissCount) {
System.out.println ("пришло из кэша");}
Пожалуйста, дайте мне знать, если я использую его неправильно ... и какой должен быть rName (регион) в этом случае ..
Есть ли другиеспособ определения, работает ли кэш второго уровня ??
Спасибо