Кэш второго уровня в спящем режиме < < net.sf.ehcache.hibernate.EhCacheProvider > >
-
06-07-2019 - |
Вопрос
Я хочу использовать кэш второго уровня в моем проекте 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 , У него очень хорошее отношение к предмету.