EJB3.0,JPA,Hibernate之间的关系

一、JB3.0和JAP之间的关系 
EJB3.0是一份规范,该规范由不同的部分组成: 
第一部分为session bean和message-driven bean定义了新的编程模型,以及部署规则等等; 
第二部分专门定义了持久化相关的规范:实体,对象/关系映射元数据,持久化管理接口和查询语言。第二部分就是我们所说的JPA(Java Persistence API),之所以取名叫JPA,很有可能是因为持久化的接口位于javax.persistence. 
所以,JPA是EJB的一部分,是EJB专门为持久化定义的规范。 

二、Hibernate和EJB3.0之间的关系 
首先你必须要了解的是,一个规范和一个产品是没有太多可比较性的,EJB3.0是java服务器端组件模型的一份规范,而hibernate是一个具体的产品,所以准确的提问应该是:hibernate实现了EJB3.0的规范吗? 
正如EJB3.0的规范划分成了不同的部分一样,EJB的实现者也有区分,有些产品完全实现了EJB3.0的规范,而有些产品只是实现了EJB3.0的一部分,比如仅实现了Java Persistence部分。 
Hibernate就是这样的产品,它实现了Java Persistence那部分规范,不仅如此,而且它还提供了一些Java Persistence规范里面没有的一些功能。所以也可以说,JPA规范所对应的功能是hibernate的子集。 【比如hibernate-distribution-3.6.0.Final-dist中的JPA jar包就是对EJB(ejb3-persistence-1.0.2.GA.jar)的实现】

三、如何判断你使用的功能是JPA描述的还是hibernate自己特有的呢? 
一个简单的方式就是检查你引入的包,如果你只使用了javax.persistence.*,那么你使用的功能是通用的JPA提供的,如果你的代码里还引入了org.hibernate.*,那么你就使用了hibernate专有的功能。 

四、实现JPA的不仅仅只有Hibernate EntityManager,还有TopLink,OpenJPA. 

五、JPA已经作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。开发者将无需在现有多种ORM框架中艰难地选择,按照Sun的预想,现有ORM框架头顶的光环将渐渐暗淡,不再具有以往的吸引力。

------------转自:https://blog.csdn.net/lichenju33/article/details/54946008,转载标明出处。------------

posted @ 2018-06-06 09:48  达摩院的BLOG  阅读(146)  评论(0)    收藏  举报