Кэш второго уровня в спящем режиме < < net.sf.ehcache.hibernate.EhCacheProvider > >

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

Вопрос

Я хочу использовать кэш второго уровня в моем проекте Hibernate, но я просто немного знаю о кеше второго уровня Hibernate, может ли кто-нибудь объяснить, как я должен использовать это в своем коде и какую конфигурацию и файл .jar мне нужны? Я установил эти настройки в свой файл hibernate.cfg.xml

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

и добавьте эти файлы jar ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar Я хочу знать, я могу изменить любую другую конфигурацию?

и как я могу понять, что мой проект использует кэш второго уровня?

если просто установить этот параметр, hibernate автоматически использует это, или я должен использовать ant другой код в моем классе .java (как любая аннотация или что-то еще)

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

Решение

Нужная аннотация - . org.hibernate.annotations.Cache . Основное использование:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

Для запросов вам необходимо . включите кеш запросов , установив для свойства hibernate.cache.use_query_cache значение true И укажите, что запрос кэшируется в его объявлении (для именованных запросов) или путем вызова setCacheable (true) в экземпляре запроса.

Все это говорит о том, что вы должны быть очень осторожны с кэшированием и ДЕЙСТВИТЕЛЬНО ПОНИМАТЬ то, что вы делаете, иначе это принесет больше вреда, чем помощи. Не смотрите на это как на «быстрое исправление» - кэширование всего, например, определенно неправильно.

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

Ваши настройки сделают кэши второго уровня и запросов доступными для использования в вашем проекте, но вам все равно необходимо включить его для определенных объектов, коллекций и запросов. Это требует тщательного планирования, потому что есть компромиссы, которые вам нужно понять. В целом, кэш второго уровня и запросов подходят для данных только для чтения или в основном для чтения, но не для изменчивых данных. Если у вас его еще нет, я бы порекомендовал получить копию Java Persistence с Hibernate , У него очень хорошее отношение к предмету.

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