我正在使用Hibernate将对象映射到实体,并且我已经开始使用实体管理器。这可能是一个愚蠢的问题,但实际上是使用实体管理器的原因是什么?以前我会使用HibernateSessionFactory来获取会话,然后使用该会话来提取/推送数据。
答案 0 :(得分:5)
因为EntityManager
是标准的一部分 - JPA。从理论上讲,如果需要,可以切换实现(Hibernate,EclipseLink,OpenJPA)。除了涉嫌携带之外,两者之间没有太大的区别。
Hibernate实现了JPA标准。事实上,EntityManager
有一个委托,基于具体的实现。对于Hibernate,委托是Session
。如果您致电getDelegate()
,则会返回当前的Session
。
我一直使用带有JPA(EntityManager)的hibernate,并且很少需要获取Session。
答案 1 :(得分:1)
EntityManager是JPA的概念。 您根本不需要将JPA与Hibernate一起使用(事实上,如果它是JPA1,我建议您不要这样做。)
答案 2 :(得分:1)
使用JPA API时使用EntityManager。 EntityManager
的Hibernate实现在内部调用HibernateSessionFactory
并为您管理Hibernate会话。
JPA中的EntityManagers与Hibernate会话的用途基本相同。