Кэш Hiber: кеширует все фиксированные данные постоянно - PullRequest
1 голос
/ 07 октября 2010

У меня есть несколько таблиц, таких как Страна, город, в котором есть статические данные. Пользователь не вводит никаких данных в эти данные. Я создаю Pojo для Country, State, City. Есть несколько pojo, которые имеют отображение со статическими данными. Мое требование состоит в том, что всякий раз, когда любой запрос поступает в Hibernate для Country (21), он не попадает в базу данных, а возвращает данные из кэша. Возможно ли это в Hibernate. Мне нужно несколько указателей и ваших мнений для реализации кэширования в моем проекте. Я использую аннотации в спящем режиме.

1 Ответ

5 голосов
/ 07 октября 2010

Мое требование заключается в том, что всякий раз, когда любой запрос поступает в Hibernate для Country (21), он не попадает в базу данных, а возвращает данные из кэша. Возможно ли это в Hibernate.

Да, это возможно при использовании кэша второго уровня, и этот тип сущностей (только для чтения) является идеальным кандидатом для кэширования (ими проще всего управлять). Вам нужно:

  • включить кэш 2-го уровня
    • установите для свойства hibernate.cache.use_second_level_cache значение true в вашей конфигурации
  • выберите провайдера кэша 2-го уровня (я предлагаю EHCache)
    • установить свойство hibernate.cache.provider_class соответственно
  • пометить ваши сущности как кешируемые (используя стратегию read-only)
    • Добавить @Cache(usage = CacheConcurrencyStrategy.READ_ONLY) к вашей сущности

Ссылки

Дополнительные ресурсы

...