Как я могу отключить кэш второго уровня некоторых определенных объектов в режиме гибернации без изменения аннотаций

StackOverflow https://stackoverflow.com/questions/934133

Вопрос

Я использую кэш второго уровня гибернации в своем приложении по определенным деловым причинам Я больше не могу изменять аннотацию объекта.

В моем проекте, помимо изменения базы данных из гибернации, существуют также другие собственные SQL, которые не проходят через гибернацию.Следовательно, данные кэша второго уровня Hibernate могут устареть после обновления базы данных с помощью собственного SQL.Вот почему я хочу чтобы отключить кэш второго уровня для определенных объектов (программно или другим способом, кроме изменения аннотации).

Заранее спасибо!

Это было полезно?

Решение

ПРЕДУПРЕЖДЕНИЕ: Как отметил Йенс Шаудер, невозможно настроить Ehcache для хранения 0 элементов в памяти, установив maxElementsInMemory="0", поскольку это фактически вызывает противоположный эффект - устанавливает неограниченный размер кэша.Такое поведение не упоминается в Кэширование в режиме гибернации страница, но задокументирована на Конфигурация кэша Страница.

Я быстро просмотрел документацию и пока не нашел альтернативного подхода.Я не могу удалить этот ответ самостоятельно.:-(

Мое первоначальное предложение:

Вы можете настроить поставщика реализации кэша второго уровня на короткое время TTL и / или на хранение 0 записей определенного типа объекта.

Например.если вы используете Ehcache, вы можете настроить его в ehcache.xml:*

<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>

Видишь Кэширование в режиме гибернации в документации Ehcache.

Другие советы

В Terracotta 3.1 и выше вы можете включать / отключать кэши гибернации 2-го уровня для каждого региона, как в конфигурации (статически), так и во время выполнения, используя консоль разработчика Terracotta.

Вы также можете отслеживать в режиме реального времени статистику кэша и гибернации для отдельных узлов в кластере или в масштабах всего кластера.

Terracotta имеет открытый исходный код.Для получения более подробной информации ознакомьтесь с Терракота для зимней спячки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top