У меня очень простой запрос. Я хочу убедиться, что у меня нет никакой путаницы. Я видел в спецификации, что кэширование не является частью спецификации и предоставляется в соответствии с конкретными поставщиками инструментов orm. Я использую Hibernate в качестве инструмента ORM в своем приложении. Но чтобы быть независимым от поставщика, я использую все (аннотации, классы и т. д.) JPA (javax.persistence), а не что-либо, специально предоставленное Hibernate. Я использую EntityManager
и EntityManagerFactory
вместо SessionFactory
и Session
. Мой вопрос заключается в том, что в блогах я видел, что поставщики кэша и механизм кэширования, предоставляемый Hibernate, позаботятся о сеансе (косвенно). Так возможно ли, что EntityManager
также сможет использовать для кэширования поставщиков и конфигурацию кэширования, и, следовательно, сущности и запросы, указанные как кэшируемые, смогут использовать функции кэширования? (думаю должны быть). Также есть ли какие-либо API, предоставляемые JPA (например, API статистики, предоставляемые Hibernate) для измерения и просмотра статистики кэширования? Пожалуйста, помогите мне в этом отношении.
Будет ли кеш гибернации (например, EHCache) работать со специальным кодом jpa (если я использую EntityManager/EM Factory вместо Session/SessionFactory)?
Ответы (1)
Да, это будет работать нормально. Если вы посмотрите на код, EntityManagerImpl
делегирует SessionImpl
, так что все будет работать как с чистым спящим режимом. Также ознакомьтесь с этой статьей о кэшировании в JPA 2.0.
person
Bozho
schedule
27.02.2011