Hibernate与JPA的区别是什么
翻译来源:https://www.quora.com/What-is-the-difference-between-Hibernate-and-JPA
本文作者:苏生米沿
本文地址:http://blog.csdn.net/sushengmiyan/article/details/52573247
问题:Hibernate与JPA的区别是什么?
Mohan Singh的回答:
简而言之:Hibernate ORM是JPA规范的一个实现。
wiki百科上的说明:
JPA是一个Java编程语言接口规范,它描述了使用标准JAVA平台和JAVA企业版本的关系型数据的管理。JPA API是JAVA社区专家组关于JSR220的一部分,JPA2.0是JSR317专家组的工作。
所以,JPA提供了一组必须实现的接口,对语言规范的参考实现都是很容易找到的,比如EclipseLink就是一个参考实现。
Hibernaye也实现了规范,但是它还额外拥有自己本身的特性。
如:
public interface AccessAuthenticator {
public boolean verifyAccess(String username,String saltedPassword);
}
这个规范包含一个接口和一个方法。为了使用这个规范你必须提供verifyAccess()这个方法的自己实现。
实现这个方法会有不同的方法方式,有的厂家会自己在服务器写一个实现。
提供规范的另一方面就是你不比依赖具体的实现,如今你可以使用hibernate orm连接数据库,当后期有更好的ORM实现的时候,你直接替换
实现就可以,比如直接替换jar包。
Vlad Mihalcea,的答复:
JPA 仅仅是个规范。它描述了客户端操作使用的接口和标准的对象关系映射元数据(java annotations注解或者XML描述符)。在API定义之
上,JPA也解释了(尽管不是很详尽)这些规范应当怎样去实现。JPA演化成 JAVA EE平台(JAVA EE6 JPA2.0,JAVAEE7 介绍了JPA2.1)
Hibernate原本在JPA规范首次发布的时候就是一个全功能的Java ORM实现。尽管它实现了JPA规范,但是也保留了原生的native api,以保证
可以向后兼容和兼容一些非标准的特性。
尽管遵循JPA规范是最好的,在实际中,很多JPA的实现都提供额外的高性能的数据处理层的特性。为了这个,Hibernate提供了以下几个规
范中没有规定的特性:
1.继承的主键生成(hi.io,pooled,pooled-lo)
2.透明的prepared statement处理
3.自定义的CRUD(@SQLInsert,@SQLUpdate,@SQLDelete)语句
4.静态/动态的实体集合过滤(如@FilterDef,@Filter,@Where)
5.映射属性到SQL片段(如@Forum)
6.不可改变的实体(如@Immutable)
7.更多的flush模式如(FlushMode.MANUAL,FlushMode.ALWAYS)
8.通过给定实体的主键二级缓存
9.实体-级别的并发缓存(如Cache(usage=CacheConcurrencyStrategy.READ_WRITE))
10.通过HQL的大量版本更新
11.乐观锁的字段检查排除(如@OptimisticLock(excluded=true))
12.去版本的乐观锁(如OptimisticLockType.ALL,OptimisticLockType.DIRTY)
13.支持跳过悲观锁的请求(无等待)
14.支持java8Date和Time及stream()
15.支持多重任务处理
Hibernate与JPA的区别是什么的更多相关文章
- [转]Hibernate与Jpa的关系,终于弄懂
原文地址:http://blog.sina.com.cn/s/blog_5f1619e80100yoxz.html 我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate, ...
- Hibernate与Jpa的关系,终于弄懂
我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实 ...
- 数据持久层框架iBatis, Hibernate 与 JPA 比较
在本文中我们介绍并比较两种最流行的开源持久框架:iBATIS和Hibernate,我们还会讨论到Java Persistence API(JPA).我们介绍每种解决方案并讨论其所规定的品质,以及在广泛 ...
- Hibernate与Jpa的关系(2)
[转自:http://blog.163.com/hero_213/blog/static/398912142010312024809/ ] 近年来ORM(Object-Relational Mappi ...
- Hibernate与Jpa的关系(1)
[转自:http://freewind.me/blog/20111129/588.html ] 我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate,还有EclipseL ...
- 转:spring data jpa、 hibernate、 jpa 三者之间的关系
原文链接:spring data jpa. hibernate. jpa 三者之间的关系 spring data jpa hibernate jpa 三者之间的关系 JPA规范与ORM框架之间的关系是 ...
- Hibernate与Jpa的关系
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA的总体思想和现有Hibernate.T ...
- Hibernate or JPA Annotation中BLOB、CLOB注解写法
BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的,而CLOB是可以直接存储字符串的. 在hibernate or JPA Annotation中,实体BLOB.CLOB类型的注解与普 ...
- Hibernate结合JPA编写通用泛型多条件查询
项目中使用Hibernate和JPA对数据库对象进行实例化,但是生成的方法不支持多条件查询.而如果针对每一个数据库对象进行多条件查询编码,则会变得很麻烦,而且一旦以后发生表结构发生变化,这些方法可能还 ...
随机推荐
- thinkjs升级到3.0后的图片上传
似乎当thinkjs升级到3.0后,才接手了一个项目.只是在实际运用过程中,还是发现了与2.2的些许差别——今天先分享关于图片上传的一些问题. 1.上传文件,我们选择了jQuery的插件:http:/ ...
- java集合详解
1.java集合框架的层次结构 Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口: ArrayList具体类 L ...
- 关于div包裹img,底下多出3px间隙的问题
背景:昨天写过一个div包裹图片的html,已经reset了所有的div,但还是发现img与div底部会有3px的间距,我检查了所有的css,发现并未发现什么问题,结果度娘了一下,发现好多朋友都遇到了 ...
- [LeetCode] 4 Keys Keyboard 四键的键盘
Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on screen. Ke ...
- 空间搜索(圆范围)中Geohash编码方案和网格编码方案对比探讨
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 多个项目中实现范围(圆)搜索的方案为:依赖库表中的X和Y字段构 ...
- Mysql之视图的操作
视图的操作: 1.视图的创建: create view view_name as 查询语句; 2.视图的查看: show tables;// 显示所有的表和视图 show create view vi ...
- Centos6.9连接工具设置
由于vm下面的centos6.9这种操作环境非常的不友好,用起来非常的不方便, 所以我们需要用一个远程连接工具来连接,我们的虚拟机.我们使用的是teraterm. 下载地址:https://osdn. ...
- [SDOI2009]HH去散步
题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢 ...
- NOIP 2012
Prob.1 vigenere密码 模拟代码: #include<cstdio> #include<cstring> #include<iostream> usin ...
- hdu 5122(2014北京—dp)
题意: 从n个数中任选一些数,问有多少种选法使他们异或和不小于M 思路: dp[i][j]表示选i个数异或和为j,则方程dp[i][j] = dp[i-1][j](不选i)+ dp[i-1][j^a[ ...