它的本质是一种ORM规范(不是ORM框架
标签:
JPA和Hibernate到底是什么关系???https://
(文章借用了其他几篇博客中的内容,因为是初学者,许多观点性的关系本身不能完全理解,就将大神的搬了过来,如有不当,可留言,本人自会妥善措置惩罚惩罚,感谢)
在学习框架的过程中,发明学的对象很多,但是觉得他们之间的联系区别都不是很了解,知道JPA可以去实现长期化数据到数据库傍边,Hibernate也有这样的成果,总以为他们之间是一种平级的关系,拥有同样的感化,是一种可以彼此替代的关系,就像你用饭时,选择吃米饭和吃面条一样,然而,在进行了一番搜索之后,发明并不是那么回事儿。
JPA自己是一种规范,它的素质是一种ORM规范(不是ORM框架,因为JPA并未供给ORM实现,只是制定了规范)因为JPA是一种规范,所以,只是供给了一些相关的接口,但是接口并不能直接使用,JPA底层需要某种JPA实现,JPA此刻就是Hibernate成果的一个子集
Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java Persistence API) 兼容认证。JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现,并不是对标关系,借用下图可以看清楚他们之间的关系,Hibernate属于遵循JPA规范的一种实现,但是JPA是Hibernate遵循的规范之一,Hibernate还有其他实现的规范,所以它们的关系更像是JPA是一种做面条的规范,而Hibernate是一种遵循做面条的规范的汤面,,他不只遵循了做面条的规范,同时也会遵循做汤和调料的其他规范,他们之间并不是吃面条和吃米饭的关系
1.JPA
JPA全称: Java Persistence API,JPA通过JDK 5.0注解或XML描述东西-关系表的映射关系,并将运行期的实体东西长期化到数据库中。
JPA的呈现有两个原因:
其一,简化现有Java EE和Java SE应用的东西长期化的开发事情;
其二,Sun但愿整合对ORM技术,实现长期化范围的统一。
Sun之所以提出JPA规范,其目的是以官方身份来统一各类ORM框架的规范,包孕著名的Hibernate、TopLink等
不过JPA规范给开发者带来了福音:开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:感受Hibernate好的,可以选择Hibernate JPA实现;感受TopLink好的,可以选择TopLink JPA实现……这样开发者可以制止为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架
JPA供给的技术:
(1)ORM映射元数据
JPA撑持XML和JDK 5.0注解两种元数据的形式,元数据描述东西和表之间的映射关系,框架据此将实体东西持
久化到数据库表中;
(2)JPA 的API
用来操纵实体东西,执行CRUD操纵,框架在后台替我们完成所有的工作,开发者从繁琐的JDBC和SQL代码中解
脱出来。
(3)盘问语言
通过面向东西而非面向数据库的盘问语言盘问数据,制止措施的SQL语句紧密耦合
2. Hibernate
JPA是需要Provider来实现其成果的,Hibernate就是JPA Provider中很强的一个。
例如:
(1)实体东西的状态,在Hibernate有自由、长期、游离三种,JPA里有new,managed,detached,removed,而这些状态都是一一对应的。
(2)flush要领,都是对应的,
(3)Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中酿成了 manager
3. JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。
那么Hibernate是如何实现与JPA 的这种关系的呢?
Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
(1)hibernate-annotation是Hibernate撑持annotation方法配置的根本,它包孕了标准的JPA annotation以及 Hibernate自身特殊成果的annotation。
(2)hibernate-core是Hibernate的核心实现,供给了Hibernate所有的核心成果。
(3)hibernate-entitymanager实现了标准的JPA,可以把它当作hibernate-core和JPA之间的适配器,它并不直接供给ORM的成果,而是对hibernate-core进行封装,使得Hibernate切合JPA的规范。
总的来说,JPA是规范,Hibernate是框架,JPA是长期化规范,而Hibernate实现了JPA。
题外的一些思考:如果抛开JPA直接使用Hibernate的注解来界说一个实例,很快发明了几个问题:
jpa中有Entity, Table,hibernate中也有,但是内容差别
jpa中有Column,OneToMany等,Hibernate中没有,也没有替代品
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31447.html
- 上一篇:边框是受到盒子的背景颜色影响
- 下一篇:jquery ,页面倒计时