0

我对概念有疑问,我想我在混合一些东西。我有一个带有 DAO 层的应用程序,这些 DAO 的实现使用 SessionFactory (Hibernate) 来执行 CRUD 操作,我还有一个服务层并使用 Spring 声明式事务管理我的工作单元,一切正常,我不确定是否使用 EntityManager 但似乎它所做的是管理我的工作单元(与我使用 Spring 所做的相同)。

我什么时候应该使用 EntityManager?使用它有什么好处?我为什么要使用它?

谢谢你。

4

1 回答 1

2

EntityManager 用于 JPA,SessionFactory 用于 Hibernate。即使您使用 JPA,Spring 仍然可以管理您的事务。如果您的 JPA 提供者是 Hibernate,那么您可以安全地混合和匹配 Hibernate 和 JPA 的东西,因为它们可以一起工作。

现在谈到何时使用 EntityManager 和优点的问题:

如果您正在开始一个新项目并且可以使用 JPA 2,那么我建议您开始使用它,因为 JPA 是规范(意味着如果您坚持规范,那么您可以在不更改代码的情况下更改实现。Eclipseling、DataNucleus、 OpenJPA 是 JPA 规范的一些示例实现)。如果您不能迁移到 JPA 2,那么我建议您坚持使用 Hibernate。

还可以浏览以下帖子

Hibernate/Toplink 在 JPA 之上提供了什么?

用于 Java 持久性的 JPA 或 Hibernate?

JPA 1 不够好

于 2010-12-27T06:13:08.593 回答