Hibernate和JPA,使用什么,在哪里?

Ton*_*ony 7 java orm hibernate jpa ejb-3.0

有人可以向我解释一下JPA和Hibernate之间的主要区别是什么?

在哪里使用Hibernate?

哪里可以使用JPA?

为什么不是实体bean?

Boz*_*zho 7

一点历史:

实体bean是EJB 1和2的一部分.它们很适合使用,所以可以选择其他方法.然后Hibernate出现了.(我不记得这些时间)

Hibernate演变成对象关系映射的事实标准.然后决定需要一个标准,因此创建了JPA规范,受Hibernate的影响很大.

JPA只是一个规范 - 它定义了ORM框架应该做什么,以及它应该支持哪些注释.JPA由许多供应商实现 - Hibernate,EclipseLink,OpenJPA等.

所以:

  • 不要使用实体bean
  • 使用您喜欢的任何JPA实现.Hibernate绝对是个不错的选择.

更新:关于评论中的次要问题:

是的,您可以将JPA与EJB会话bean一起使用:

@Stateless
public class YourSessionBean implements RemoteInterface {

     @PersistenceContext
     private EntityManager entityManager; // this is the JPA EntityManager
}
Run Code Online (Sandbox Code Playgroud)

您可以通过容器注入实体管理器并准备好运行JPA实体.当然,你需要为此进行配置,但这超出了这个问题的范围.