Я пытаюсь заставить работать кеширование JPA 2.0 в моем приложении Spring 3.0.5, которое использует Hibernate и EhCache. Я не хочу, чтобы мое приложение связывалось с Hibernate и EhCache, и я хочу, чтобы оно использовало чистый JPA-код только настолько, насколько это возможно.
Мне удалось заставить кеширование работать с EHCache и Hibernate, установив специфичную для Hibernate аннотацию @Cache
поверх моих классов сущностей и указав org.hibernate.cacheable
в качестве подсказки для моих именованных запросов.
Однако, когда я пытаюсь переключить их на @Cacheable(true)
и установить подсказку запроса javax.persistence.cache.retrieveMode
на "CacheRetrieveMode.USE"
(я также пытался просто "USE"
), это не работает, и мой именованный запрос, который должен быть кэширован, просто получить снова из базы данных. Я указываю их в аннотации самого NamedQuery, используя hints = ...
Я пробовал различные комбинации <shared-cache-mode>
, ENABLE_SELECTIVE
, DISABLE_SELECTIVE
и т. Д., Но, похоже, ни одна из них не имела никакого эффекта.
Я начинаю подозревать, что эта функция недоступна в J2SE. Я что-то пропустил? Должен ли я включить дополнительный обработчик аннотаций из контекста приложения Spring?
Спасибо.