不在 Hibernate 中使用 EntityManager 的后果
Consequences of not using an EntityManager with Hibernate
我正在处理现有的大型应用程序,转换为使用 Hibernate 来实现持久性。该应用程序在 Tomcat 中运行,因此我并不是真正在 J2EE 容器环境中,我们也没有使用 Spring。集成 Spring 确实超出了当前项目的范围,并不是一个真正的选择。
我查看了人们如何使用 Hibernate 为其持久层编写 DAO 的各种示例,有些只是使用 SessionFactory 来创建会话,有些则使用 EntityManager。我可以看到如何 bootstrap 一个 EntityManager,但我想知道我是否真的需要这样做?
不使用 EntityManager 的后果是什么?
您可以使用 Hibernate Session
,但 API 是特定于 Hibernate 的。 EntityManager
允许 JPA 供应商之间的可移植性,这虽然在理论上很有吸引力,但实际上并不可行,因为无论如何您都需要特定的 API (pooled-lo optimizer, advanced locking features)。
因此,无论您可以使用 EntityManger
做什么,您都可以使用 Hibernate Session
,但反之则不行。
我正在处理现有的大型应用程序,转换为使用 Hibernate 来实现持久性。该应用程序在 Tomcat 中运行,因此我并不是真正在 J2EE 容器环境中,我们也没有使用 Spring。集成 Spring 确实超出了当前项目的范围,并不是一个真正的选择。
我查看了人们如何使用 Hibernate 为其持久层编写 DAO 的各种示例,有些只是使用 SessionFactory 来创建会话,有些则使用 EntityManager。我可以看到如何 bootstrap 一个 EntityManager,但我想知道我是否真的需要这样做?
不使用 EntityManager 的后果是什么?
您可以使用 Hibernate Session
,但 API 是特定于 Hibernate 的。 EntityManager
允许 JPA 供应商之间的可移植性,这虽然在理论上很有吸引力,但实际上并不可行,因为无论如何您都需要特定的 API (pooled-lo optimizer, advanced locking features)。
因此,无论您可以使用 EntityManger
做什么,您都可以使用 Hibernate Session
,但反之则不行。