2011-02-09 2 views
3

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

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

ответ

1

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

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

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

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