有人可以向我解释一下 JPA 和 Hibernate 之间的主要区别是什么吗?
在哪里使用 Hibernate?
在哪里使用 JPA?
为什么不是实体 bean?
最佳答案
一点历史:
实体 bean 是 EJB 1 和 2 的一部分。它们很难使用,因此需要一个替代方案。然后Hibernate出现了。 (我不记得这些时间了)
Hibernate 发展成为对象关系映射中的事实上的标准。然后决定需要一个标准,因此创建了受 Hibernate 影响很大的 JPA 规范。
JPA 只是一个规范 - 它定义了 ORM 框架应该做什么,以及它应该支持哪些注释。 JPA 由许多供应商实现 - Hibernate、EclipseLink、OpenJPA 等。
所以:
- 不要使用实体 bean
- 使用您喜欢的任何 JPA 实现。 Hibernate 绝对是一个不错的选择。
更新:关于评论中的次要问题:
是的,您可以将 JPA 与 EJB session bean 一起使用:
@Stateless
public class YourSessionBean implements RemoteInterface {
@PersistenceContext
private EntityManager entityManager; // this is the JPA EntityManager
}
并且您拥有由容器注入(inject)的实体管理器并准备好操作 JPA 实体。当然你需要为此进行配置,但这超出了这个问题的范围。
关于java - Hibernate 和 JPA,用什么,用在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108957/