Что касается настройки Ehcache в кэш второго уровня Hibernate программно, нет это не представляется возможным из коробки, когда вы используете Ehcache 2.x и net.sf.ehcache.hibernate.EhCacheRegionFactory
. Вам нужно будет расширить заводский класс и настроить его для использования.
Для Hibernate 5.2 с помощью JCache, используя Ehcache 3.x в качестве провайдера, существует более простой путь: убедитесь, что вы сначала сконфигурировали JCache CacheManager
, а затем Hibernate использовали настроенную конфигурацию. В качестве альтернативы вы можете расширить org.hibernate.cache.jcache.JCacheRegionFactory
и приспособить CacheManager
и Cache
творения. following sample может помочь вам разобраться.
На второй точке:
Spring caching общая абстракция, которая может быть использована во всех слоях приложения, где вы решили, что в кэше, из которых называют и т.д ...
Hibernate second level cache является выделенный кеш между вашей объектной моделью и доступом к базе данных. Вы указываете инфраструктуре, что кешировать, с какой семантикой, но тогда фактическая работа скрыта от вас.
Вы можете объединить оба приложения в одном приложении, где вы будете кэшировать результаты более высокого уровня, такие как результаты вызова службы или веб-страницы с помощью Spring Cache и сущности/результаты запроса с Hibernate 2LC. Хотя я бы рекомендовал использовать разные Cache
, чтобы отделить их содержание и жизненный цикл.
Большое спасибо за то, что потратили свое время, чтобы ответить –
@SafdarAkrami Я выполнил полную реализацию Java для образца fullstack ehcache. Но он еще не слит. Поэтому вы можете проверить https://github.com/henri-tremblay/ehcache3-samples/blob/javaonly/fullstack/src/main/java/org/terracotta/demo/config/CacheConfiguration.java – Henri