Java 为什么要使用实体管理器?

Java 为什么要使用实体管理器?,java,hibernate,persistence,Java,Hibernate,Persistence,我正在使用Hibernate将对象映射到实体,并且我已经开始使用实体管理器。这可能是一个愚蠢的问题,但使用实体管理器的真正原因是什么?以前我会使用HibernateSessionFactory来获取会话,然后使用该会话来拉/推数据 EntityManager是JPA的一个概念。 您根本不需要在Hibernate中使用JPA(事实上,如果是JPA1,我建议您不要使用)。因为EntityManager是标准JPA的一部分。理论上,如果需要,可以切换实现(Hibernate、EclipseLink、O

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

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

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

Hibernate实现JPA标准。事实上,
EntityManager
有一个基于具体实现的委托。对于Hibernate,代理是
会话
。如果调用
getDelegate()
,它将返回当前的
会话


我一直将hibernate与JPA(EntityManager)一起使用,很少需要获得会话。

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

JPA中的EntityManager的作用与Hibernate会话基本相同