jdbc相关图形

1 dainner_JDBC图1

2 百度百科jdbc图1

 3 百度百科_jpa图1

        JPA是sun提出的一个对象持久化规范,各JavaEE应用服务器自主选择具体实现。JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不是使用私有供应商特有的API。因此开发人员只需使用供应商特有的API来获得JPA规范没有解决但应用程序中需要的功能。尽可能地使用JPA API,但是当需要供应商公开但是规范中没有提供的功能时,则使用供应商特有的API每个实现(Hibernate/toplink/open jpa)都定义了自己的映射定义或客户端 API。专家小组收集了所有这些工具中最好的,因此他们创建了 Java持久化API 标准。




Hibernate

        JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个,应该说无人能出其右。从功能上来说,JPA就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的JPA(Java Persistence API) 兼容认证。

        JPA的设计者是Hibernate框架的作者,因此Hibernate作为Jboss 服务器中JPA的默认实现;Oracle的 Weblogic使用EclipseLink(以前叫TopLink)作为默认的JPA实现;IBM的Websphere和Sun的Glassfish默认使用OpenJPA(Apache的一个开源项目)作为其默认的JPA实现。(百度文库 spring Data jpa简介 - 百度文库 (baidu.com)  https://wenku.baidu.com/view/edca78a5dc3383c4bb4cf7ec4afe04a1b071b0e5.html)

        只要熟悉Hibernate或者其他ORM框架,在使用JPA时会发现其实非常容易上手。例如实体对象的状态,在Hibernate有自由、持久、游离三种,JPA里有new,managed,detached,removed,明眼人一看就知道,这些状态都是一一对应的。再如flush方法,都是对应的,而其他的再如说Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了manager,所以从Hibernate到JPA的代价应该是非常小的

        同样,JDO,也开始兼容JPA。在ORM的领域中,看来JPA已经是王道,规范就是规范。在各大厂商的支持下,JPA的使用开始变得广泛。

4 spring data jpa

4.1 版本1

在这里插入图片描述

上面这张关系图展示了这三者的关系。

  1. JPA(Java Persistence API)是规范,它指明了持久化、读取和管理Java对象映射到数据库表时的规范。
  2. Hibernate则是一个ORM框架,是一个针对 Java 环境的对象关系映射解决方案,它实现了Java对象到数据库表的映射,反之亦然。注意,JPA 是一个规范,而 Hibernate 是一个 JPA 提供者或实现。也就是说,Hibernate提供了JPA的实现
  3. 说法1:Spring Data JPA是Spring Framework的一部分。它不是JPA的实现,而是在JPA之上提供更高层次的抽象,可以减少很多模板代码。Spring Data JPA 不是一个实现或 JPA 提供者,它只是一个抽象( JPA 数据访问抽象)。而Spring Data JPA的默认实现是Hibernate,当然也可以是其他的JPA Provider请记住,Spring Data JPA总是需要 JPA 提供者,比如 Hibernate 或 eclipselink,没有 JPA 提供者,Spring Data JPA 无法工作。

         说法2:Spring Data JPA不是JPA提供者。它是一个库/框架,在JPA提供者(如 Hibernate)的顶部添加了额外的抽象层。

       4.对于 springdata,您可以使用 Hibernate、 Eclipse Link 或任何其他 JPA 提供者(程序)。

参考:

(1)csdn (29条消息) JPA、Hibernate、Spring Data JPA区别_chenzeyu110的博客-CSDN博客 JPA、Hibernate、Spring Data JPA区别_chenzeyu110的博客-CSDN博客

(2)JPA、Hibernate、Spring Data JPA 傻傻分不清? | LeeReindeer's blog JPA、Hibernate、Spring Data JPA 傻傻分不清? | LeeReindeer's blog

(3)Difference Between Hibernate and Spring Data JPA - DZone Java  Difference Between Hibernate and Spring Data JPA - DZone Java

(4)What is the Difference Between JPA and Hibernate? (javaguides.net)  What is the Difference Between JPA and Hibernate?

(5)JPA Tutorial - Java Persistence API (javaguides.net) JPA Tutorial - Java Persistence API(有jpa与hibernate具体代码实现的对比教程)

(6)java - What is the difference between Hibernate and Spring Data JPA - Stack Overflow  https://stackoverflow.com/questions/23862994/what-is-the-difference-between-hibernate-and-spring-data-jpa/23863416#23863416

4.2 版本2

参考:JPA、Hibernate、Spring data jpa之间的关系,终于明白了 (baidu.com)  JPA、Hibernate、Spring data jpa之间的关系,终于明白了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值