4000-9696-28

一文解读JPA、Hibernate、Spring Data JPA之间的关系

2023年01月30日 10:21供稿中心:北大青鸟总部

摘要: JPA全称为Java Persistence API(Java持久层API),它是Sun公司在JavaEE 5中提出的Java持久化规范。JPA为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。

我们都知道Java持久层框架访问数据库的方式大致分为两种。一种以SQL核心,封装一定程度的JDBC操作,比如:MyBatis。另一种是以Java实体类为核心,将实体类的和数据库表之间建立映射关系,也就是我们说的ORM框架,如:Hibernate、Spring Data JPA。


今天咱们就来了解一下什么是Spring Data JPA。


首先JPA是啥?在开始学习Spring Data JPA之前我们首先还是要先了解下什么是JPA,因为Spring Data JPA是建立的JPA的基础之上的,那到底什么是JPA呢?

我们都知道不同的数据库厂商都有自己的实现类,后来统一规范也就有了数据库驱动,Java在操作数据库的时候,底层使用的其实是JDBC,而JDBC是一组操作不同数据库的规范。我们的Java应用程序,只需要调用JDBC提供的API就访问数据库了。



而JPA也是类似的道理,JPA全称为Java Persistence API(Java持久层API),它是Sun公司在JavaEE 5中提出的Java持久化规范。

JPA为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。

JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。很多ORM框架都是实现了JPA的规范,如:Hibernate、EclipseLink。

需要注意的是JPA统一了Java应用程序访问ORM框架的规范。


JPA为我们提供了以下规范:

  1. ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中

  2. JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发人员不用再写SQL了

  3. JPQL查询语言:通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。


接下来我们继续说一下Hibernate是啥?Hibernate是Java中的对象关系映射解决方案。对象关系映射或ORM框架是将应用程序数据模型对象映射到关系数据库表的技术。

Hibernate 不仅关注于从 Java 类到数据库表的映射,也有 Java 数据类型到 SQL 数据类型的映射。

Hibernate和JPA是什么关系呢?

上面我们介绍到JPA是Java EE 5规范中提出的Java持久化接口,而Hibernate是一个ORM框架。

JPA和Hibernate的关系:

  1. JPA是一个规范,而不是框架

  2. Hibernate是JPA的一种实现,是一个框架


那么Spring Data是啥?SpringData是Spring 社区的一个子项目,主要用于简化数据(关系型&非关系型)访问,其主要目标是使得数据库的访问变得方便快捷。

1.它提供很多模板操作

  • Spring Data Elasticsearch

  • Spring Data MongoDB

  • Spring Data Redis

  • Spring Data Solr

2.强大的Repository和定制的数据储存对象的抽象映射

3.对数据访问对象的支持


Spring Data JPA是在实现了JPA规范的基础上封装的一套JPA应用框架。虽然ORM框架都实现了JPA规范,但是在不同的ORM框架之间切换仍然需要编写不同的代码。

而使用SpringData JPA能够方便大家在不同的ORM框架之间进行切换而不要更改代码。Spring Data JPA旨在通过将统一ORM框架的访问持久层的操作,来提高开发人的效率。



Spring Data JPA给我们提供主要的类和接口。

Repository接口:

Repository

CrudRepository

JpaRepository

Repository实现类:

SimpleJpaRepository

QueryDslJpaRepository

以上这些类和接口就是我们以后在使用Spring Data JPA的时候需要掌握的。


Spring Data JPA和Hibernate的关系:

Hibernate其实是JPA的一种实现,而Spring Data JPA是一个JPA数据访问抽象。

也就是说SpringData JPA不是一个实现或JPA提供的程序,它只是一个抽象层,主要用于减少为各种持久层存储实现数据访问层所需的样板代码量。但是它还是需要JPA提供实现程序,其实Spring Data JPA底层就是使用的Hibernate实现。


有没有被绕晕?总结一下:

  1. Hibernate是JPA的一种实现,是一个框架

  2. Spring Data JPA是一种JPA的抽象层,底层依赖Hibernate


今天在这里主要给大家介绍了JPA、Hibernate、以及Spring Data JPA的概念以及三者的关系,让大家对这些常用的持久层规范和框架有一个清晰的认识。

相信大家在以后再接触到其他的同类ORM框架或者其他持久层框架的时候就能更加的游刃有余。


标签:
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
学习客户端下载
青鸟优师
青鸟云课堂
微信 公众号 咨询 顶部 首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。