Hibernate Session和EntityManager之间的区别[重复]

Posted

技术标签:

【中文标题】Hibernate Session和EntityManager之间的区别[重复]【英文标题】:difference between Hibernate Session and EntityManager [duplicate] 【发布时间】:2013-05-16 05:54:48 【问题描述】:

Hibernate Session 类和EntityManager 类有什么区别?我知道EntityManager 实现了Java Persistence API,但我不确定它与Session 有什么关系。它们有关系吗?

【问题讨论】:

【参考方案1】:

Session 是特定于休眠的 API,EntityManager 是 JPA 的标准化 API。您可以将EntityManager 视为包装Session 的适配器类(您甚至可以通过getDelegate() 函数从EntityManager 对象中获取Session 对象)。

这与周围的其他 Java API 没有什么不同(例如,JDBC 是一个标准 API,每个供应商通过实现标准功能的驱动程序将其产品适配到 API)。

【讨论】:

它们在功能上是否有区别,或者它们或多或少相同? 它们并不完全相同(函数名称不同甚至用途不同,注解不同等)。 hibernate(以及周围的所有其他 JPA 供应商)所做的是提供一个适配器对象,该对象通过调用本机 hibernate API 创建 EntityManager 功能。 实体管理器是否在每次请求时都创建一个新会话?只是好奇

以上是关于Hibernate Session和EntityManager之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 中的 session.persist() 和 session.save() 有啥区别?

EntityManagerFactory 和 SessionFactory 的区别? [复制]

Hibernate——实例总结Hibernate对象的状态和ThreadLoacl封闭的session

Hibernate常用的接口和类---Session接口☆☆☆☆☆

Session.get() 和 EntityManager.find() Hibernate 有啥区别

hibernate session缓存