Интеграция Ehcache с Spring MVC и Hibernate Application

Я работаю над Java-приложением, которое разрабатывается с использованием Java (JDK 1.8), Spring MVC(Restful Web-Layer Layer) 4.x, Hibernate 5.x, MYSQL Db и Tomcat Server 8. Все настраивается программно в конфигурации Java и нет никаких файлов конфигурации XML. Мне нужно настроить кэш второго уровня для спящего режима. Я планирую интегрировать EhCache с приложением.

  1. Этого можно добиться с помощью Java Config (без файла EhCache.xml)?
  2. Другой вопрос, в чем разница между кешем Spring и Hibernate второго уровня?

1 ответ

Решение

Что касается программной настройки Ehcache в качестве кэша второго уровня Hibernate, нет, это невозможно из коробки при использовании Ehcache 2.x и net.sf.ehcache.hibernate.EhCacheRegionFactory, Вам придется расширить фабричный класс и настроить его CacheManager использовать.

Для Hibernate 5.2 с JCache, использующего Ehcache 3.x в качестве провайдера, существует более простой путь: убедитесь, что вы сначала настроили JCache CacheManager а затем Hibernate использовать настроенный. В качестве альтернативы вы можете продлить org.hibernate.cache.jcache.JCacheRegionFactory и адаптировать CacheManager а также Cache творения. Следующий пример может помочь вам понять это.

По второму пункту:

Spring Caching - это общая абстракция, которую можно использовать на всех уровнях вашего приложения, где вы решаете, что кэшируется, из какого вызова и т. Д.

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

Конечно, вы можете комбинировать оба в одном приложении, где вы будете кэшировать результаты более высокого уровня, такие как результаты вызовов служб или веб-страницы с Spring Cache и результаты объектов / запросов с Hibernate 2LC. Хотя я бы рекомендовал использовать разные Cache хорошо разделить их содержание и жизненный цикл.

Другие вопросы по тегам