为什么要使用实体经理?

我正在使用Hibernate将对象映射到实体,并且我已经开始使用实体管理器。 这可能是一个愚蠢的问题,但实际上是使用实体管理器的原因是什么? 以前我会使用HibernateSessionFactory来获取会话,然后使用该会话来提取/推送数据。

因为EntityManager是标准的一部分 – JPA。 从理论上讲,如果需要,您可以切换实现(Hibernate,EclipseLink,OpenJPA)。 除了据称可移植性之外,两者之间没有太大的区别。

Hibernate实现了JPA标准。 实际上, EntityManager具有基于具体实现的委托。 对于Hibernate,委托是Session 。 如果你调用getDelegate() ,它将返回当前的Session

我一直使用带有JPA(EntityManager)的hibernate,并且很少需要获取Session。

EntityManager是JPA的概念。 您根本不需要使用JPA和Hibernate(事实上,如果它是JPA1,我建议你不要)。

使用JPA API时使用EntityManager。 EntityManager Hibernate实现在内部调用HibernateSessionFactory并为您管理Hibernate会话。

JPA中的EntityManagers与Hibernate会话的用途基本相同。