Можно ли ограничить размер кэша второго уровня Hibernate для конкретного объекта?

У меня есть сценарий, в котором включен кэш второго уровня Hibernate, и я хотел бы кэшировать объект, для которого 1000 экземпляров создаются каждый день и сохраняются в течение 8 лет, но запросы касаются только последних 2 дней. Я хотел бы избежать необходимости создавать таблицу истории, потому что в редких случаях для исторического поиска код зависит от даты.

Возможно ли в Hibernate с Infinispan в качестве провайдера уровня 2 очень конкретно настроить конкретный кеш с определенными атрибутами (политика вытеснения, размер и т. д.), который Hibernate должен использовать для объекта Foo?


person Καrτhικ    schedule 09.02.2011    source источник


Ответы (1)


да. В Hibernate у вас может быть N «регионов» кеша, которые могут иметь разные конфигурации и могут быть специфичными для некоторых объектов. Сама конфигурация зависит от провайдера (в вашем случае Infinispan). Подробнее о конфигурации Infinispan см. в этом документе:

http://community.jboss.org/wiki/usinginfinispanasjpahibernatesecondlevelcacheprovider#Advanced_Configuration

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

person jpkrohling    schedule 10.02.2011