Редактировать: поскольку вы не используете Spring Boot, вам нужно обязательно установить свойство, которое связывает менеджер кэша с Hibernate.
Прежде всего вам нужно использовать JCache, поэтому вам придетсязамените свою пользовательскую конфигурацию кеша на использование JCache (Hibernate не обеспечивает реализацию абстракции кеша для cache2k).
У вас должна быть какая-то пользовательская настройка JPA, которая настраивает EntityManagerFactory
.В этой настройке обязательно введите CacheManager
, который вы создали.Если у вас есть точка внедрения, контекст полностью разрешит CacheManager
, прежде чем пытаться настроить Hibernate (что, безусловно, вам здесь нужно).
Как только вы это сделаете, добавьте следующееСвойство Hibernate:
hibernateProperties.put(ConfigSettings.CACHE_MANAGER, cacheManager.getCacheManager());
Где cacheManager
- это JCacheCacheManager
(реализация Spring оборачивает собственный javax.cache.CacheManager
).
Все становится проще, если вы используете Spring Boot.Прежде всего, вы должны убедиться, что Spring Boot настроил менеджер кеша, а не делал это самостоятельно.Поскольку вы используете JCache для Hibernate, просто используйте тот же механизм в Spring Boot, поскольку он в любом случае полностью прозрачен (мы поместим JCache CacheManager
в правильную абстракцию за кулисами).
Если вы это сделаетечто Spring Boot обязательно улучшит менеджер кэша JCache перед запуском hibernate.Также есть специальная инструкция, объясняющая , как настроить интеграцию между двумя .
После того, как вы это сделаете, тот же менеджер кэша будет открыт для общего доступа.