Hibernate提供了为查询和L2缓存选择不同的缓存提供程序,但似乎没有明确的声明,如果Hibernate仅用作普通JPA提供程序,即通过使用EntityManager
运行查询,这是否会产生影响Session
。所有介绍都只是简单介绍Hibernate,Hibernate是Hibernate特有的Hibernate,还是Hibernate作为JPA提供者,然后提供涉及Hibernate的代码示例 - 宣传使用或因为它是必需的?
如果重要,我指的是Java EE环境。
答案 0 :(得分:0)
使用缓存提供程序只是配置Hibernate的问题。 EntityManager
只是Session
的精简包装。自Hibernate版本5.2 Session
扩展EntityManager
以来,仅供参考,请参阅https://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/Session.html。
答案是 - 即使通过JPA使用,Hibernate也会使用它们的全部功能。
修改强>
您可以通过以下代码确保EntityManager
包装Session
:
EntityManager em = ...; // Get EntityManager from somewhere
Session session = em.unwrap(Session.class);
如果您使用Hibernate,那么您将成功地session
包裹EntityManager
,并且可以直接使用它。