Каково время кэширования по умолчанию при использовании кеша второго уровня Hibernate

При использовании кеша Hibernate 2-го уровня и кеша запросов и ничего не указано внутри ehcache.xml, каково время кэширования по умолчанию?


person cometta    schedule 18.03.2010    source источник


Ответы (1)


Взято из документации по Конфигурации кэша:

The following attributes and elements are optional.

timeToIdleSeconds:
Sets the time to idle for an element before it expires.
i.e. The maximum amount of time between accesses before an element expires
Is only used if the element is not eternal.
Optional attribute. A value of 0 means that an Element can idle for infinity.
The default value is 0.

timeToLiveSeconds:
Sets the time to live for an element before it expires.
i.e. The maximum time between creation time and when an element expires.
Is only used if the element is not eternal.
Optional attribute. A value of 0 means that and Element can live for infinity.
The default value is 0.

Обратите внимание, что EHCache использует timeToLive, а не время истечения срока действия, и по умолчанию используется значение 0, если оно не указано.


Обновление: хотя сказанное выше о значениях по умолчанию при настройке кеша верно, похоже, что эти значения по умолчанию не применяются, если вы не укажете какие-либо ehcache.xml. Поэтому я копнул немного дальше и думаю, что EHCache всегда может использовать defaultCache. в этом случае — в том числе для StandardQueryCache — и этот defaultCache имеет timeToLive 2 минуты:

<defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"
        />

Я не могу подтвердить это прямо сейчас, но я бы сделал следующее:

  • сначала активируйте ведение журнала в EHCache, EHCache регистрирует предупреждение, когда используется defaultCache:

Хотя defaultCache очень удобен, предпочтительно, чтобы каждый кэш настраивался индивидуально. По этой причине сообщение уровня предупреждения журнала выдается каждый раз, когда кэш создается на основе значений defaultCache.

  • во-вторых, предоставьте ehcache.xml (и настройте кеш для StandardQueryCache).
person Pascal Thivent    schedule 18.03.2010
comment
у меня есть страница, использующая запрос 2-го уровня +cache. кеширование работает нормально, потому что, когда я обновляю show_sql, не отображается sql-запрос. но примерно через 4-5 минут после того, как я нажму кнопку «Обновить», он показывает, что запрос извлекается из БД. из вашего объяснения значение по умолчанию равно «0», но не похоже на это. можно уточнить? - person cometta; 18.03.2010
comment
Ссылка для настройки кэша — 404. - person luckydonald; 07.10.2016