Будет ли кеш гибернации (например, EHCache) работать со специальным кодом jpa (если я использую EntityManager/EM Factory вместо Session/SessionFactory)?

У меня очень простой запрос. Я хочу убедиться, что у меня нет никакой путаницы. Я видел в спецификации, что кэширование не является частью спецификации и предоставляется в соответствии с конкретными поставщиками инструментов orm. Я использую Hibernate в качестве инструмента ORM в своем приложении. Но чтобы быть независимым от поставщика, я использую все (аннотации, классы и т. д.) JPA (javax.persistence), а не что-либо, специально предоставленное Hibernate. Я использую EntityManager и EntityManagerFactory вместо SessionFactory и Session. Мой вопрос заключается в том, что в блогах я видел, что поставщики кэша и механизм кэширования, предоставляемый Hibernate, позаботятся о сеансе (косвенно). Так возможно ли, что EntityManager также сможет использовать для кэширования поставщиков и конфигурацию кэширования, и, следовательно, сущности и запросы, указанные как кэшируемые, смогут использовать функции кэширования? (думаю должны быть). Также есть ли какие-либо API, предоставляемые JPA (например, API статистики, предоставляемые Hibernate) для измерения и просмотра статистики кэширования? Пожалуйста, помогите мне в этом отношении.


person Yogesh Golande    schedule 27.02.2011    source источник


Ответы (1)


Да, это будет работать нормально. Если вы посмотрите на код, EntityManagerImpl делегирует SessionImpl, так что все будет работать как с чистым спящим режимом. Также ознакомьтесь с этой статьей о кэшировании в JPA 2.0.

person Bozho    schedule 27.02.2011