2009-08-17 3 views
0

Я настроил несколько моих объектов, которые можно кэшировать (в файле сопоставления), и из того, что я вижу для этого конкретного объекта, кеш работает не так хорошо.Hibernate + EhCache, не хватает кеша

Для других объектов я вижу, что количество ударов увеличивается на каждой итерации, но пропущенный счет равен 0, тогда как для этого я вижу, что он пропускает каждый раз для сеанса.

Elements in Memory: 8305 
Elements on Disk: 0 
Hit Count: 24915 
Missed Count 8305 
Put Count: 8305 

Я ищу некоторые указатели на то, что может быть неправильным.

  • В качестве фона я проверил варианты equals и hashCode, и даже отладка, кажется, возвращает правильные результаты.
  • Этот конкретный объект используется в коллекциях для других объектов, а также для верхнего уровня.
+0

Нужна помощь http://stackoverflow.com/questions/17046830/hibernate-4-0-ehcache-2-4-3-always-miss-cache-hit – GdJeek

ответ

2

Несомненно, эта статистика показывает, что вы правильно выбрали кеш.

Если вы получаете объект по его ID, Hibernate будет следовать примерно следующие шаги:

  1. Проверить в кэше первого уровня (объект Session)
  2. Проверка второго кэша уровня, и пропустить
  3. Загрузите объект из БД
  4. Поместить в кэш второго уровня в следующий раз

наиболее вероятно объяснение для других объектов, не регистрирующих пропуски, заключается в том, что вы не обращаетесь к ним по их идентификатору, вместо того, чтобы использовать запрос или какую-либо связь, где прямой доступ к кешу невозможен.

Смежные вопросы