ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hibernate, Jpa, Spring Data Jpa的关系与区别

2021-09-08 09:33:46  阅读:156  来源: 互联网

标签:Hibernate 封装 Jpa Spring JPA Data


  JPA是一套标准与规范,是Java Persistence API的简称,定义了一种对象、关系映射工具,用于管理应用中的关系数据。将开发者从JDBC和SQL的样板代码中解放出来。这套标准可以是Hibernate实现,也可以是OpenJpa, EclipseLink......所以可以理解为,JPA是一套标准,将各种ORM统一封装了起来。而Spring Data Jpa是对JPA的再次封装,底层还是使用了Hibernate实现的JPA标准,成为Spring Data家族的一员,在SpringBoot和SpringCloud中可以方便的调用。

  JPA和Hibernate的关系比较好理解,但是在使用多了Spring Data Jpa之后会有种感觉说,好像这些东西天然就是融合在一起的。其实想一想,JPA是规范,Hibernate是一种ORM实现,那么我们以前还经常会做所谓的SSH整合,整合不好的话还会出现很多bug,那么这个Spring Data Jpa就是把Hibernate实现的JPA和Spring整合好了,形成了一种事实上的绑定,我们在Spring中想要用Jpa的话,一般直接就引入Spring Data Jpa就完事,很便捷了。

  另外,在Spring Data Jpa中,还规定了一些特殊的接口,便于我们在实现中使用。而这些接口与实现,本身和JPA是没有什么关系的,它们只是Spring Data Jpa系列中的一种规范和理念。所以,有一个比较重要的工作就是要区分出来,哪一部分是Hibernate的主要内容,哪一部分是JPA定义的主要概念,而哪一部分又是Spring Data理念下的产物,这样在出现bug之后,我们搜索解决方案的方向就基本不会太偏,往往容易找到问题的本质。

---------------------------------------------------------------------------------------------------
Repository是最底层的抽象接口,最顶级的父类。查看Hierarchy,看图:

右键实现类SimpleJpaRepository,show diagram:

JapRepositoy所继承的如CRUD,PageAndSort,等等是Spring Data为了兼容NoSQL而进行的抽象封装。从JpaRepository开始,是对关系型数据库进行抽象封装。

---------------------------------------------------------------------------------------------------

【参考】《Spring Data Jpa入门到精通》

标签:Hibernate,封装,Jpa,Spring,JPA,Data
来源: https://www.cnblogs.com/bruceChan0018/p/15241179.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有