Интеграция 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 с приложением.
- Этого можно добиться с помощью Java Config (без файла EhCache.xml)?
- Другой вопрос, в чем разница между кешем 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
хорошо разделить их содержание и жизненный цикл.