Кратко о кэшировании в Hibernate

Здесь будет описано кэширование лишь в общих чертах. В дальнейшем, возможно, я напишу более подробную статью с примером.

В Hibernate существует три уровня кэширования:

  1. Сессионный или транзакционный кэш. Он же кэш первого уровня.
  2. Кэш второго уровня или кэш SessionFactory.
  3. Кэш запросов или кэш третьего уровня.

Кэш первого уровня или сессионный кэш включён по умолчанию, и его нельзя отключить. Он связан с объектом Session. Кэш первого уровня существует только в течение одной сессии и очищается при её закрытии.

Кэш второго уровня или кэш SessionFactory по умолчанию отключён. Он позволяет кэшировать объекты для всего SessionFactory. Для его включения нужно подключить одну из библиотек JCache, Ehcache или Infinispan. Настройки этих библиотек отличаются. И здесь я их описывать не буду. В дальнейшем, возможно, напишу отдельную статью для какой-нибудь из них.

Кэш третьего уровня позволяет кэшировать запросы. Чтобы его включить, нужно подключить одну из библиотек для кэша второго уровня и прописать в настройках Hibernate:

После этого можно будет кэшировать результаты запросов HQL или CriteriaQuery выставляя для них setCacheable(true).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *