學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

一文解讀JPA、Hibernate、Spring Data JPA之間的關系

來源:北大青鳥總部 2023年01月30日 10:21

摘要: JPA全稱為Java Persistence API(Java持久層API),它是Sun公司在JavaEE 5中提出的Java持久化規(guī)范。JPA為Java開發(fā)人員提供了一種對象/關聯(lián)映射工具來管理Java應用中的關系數(shù)據。

我們都知道Java持久層框架訪問數(shù)據庫的方式大致分為兩種。一種以SQL核心,封裝一定程度的JDBC操作,比如:MyBatis。另一種是以Java實體類為核心,將實體類的和數(shù)據庫表之間建立映射關系,也就是我們說的ORM框架,如:Hibernate、Spring Data JPA。


今天咱們就來了解一下什么是Spring Data JPA。


首先JPA是啥?在開始學習Spring Data JPA之前我們首先還是要先了解下什么是JPA,因為Spring Data JPA是建立的JPA的基礎之上的,那到底什么是JPA呢?

我們都知道不同的數(shù)據庫廠商都有自己的實現(xiàn)類,后來統(tǒng)一規(guī)范也就有了數(shù)據庫驅動,Java在操作數(shù)據庫的時候,底層使用的其實是JDBC,而JDBC是一組操作不同數(shù)據庫的規(guī)范。我們的Java應用程序,只需要調用JDBC提供的API就訪問數(shù)據庫了。



而JPA也是類似的道理,JPA全稱為Java Persistence API(Java持久層API),它是Sun公司在JavaEE 5中提出的Java持久化規(guī)范。

JPA為Java開發(fā)人員提供了一種對象/關聯(lián)映射工具來管理Java應用中的關系數(shù)據。

JPA吸取了目前Java持久化技術的優(yōu)點,旨在規(guī)范、簡化Java對象的持久化工作。很多ORM框架都是實現(xiàn)了JPA的規(guī)范,如:Hibernate、EclipseLink。

需要注意的是JPA統(tǒng)一了Java應用程序訪問ORM框架的規(guī)范。


JPA為我們提供了以下規(guī)范:

  1. ORM映射元數(shù)據:JPA支持XML和注解兩種元數(shù)據的形式,元數(shù)據描述對象和表之間的映射關系,框架據此將實體對象持久化到數(shù)據庫表中

  2. JPA 的API:用來操作實體對象,執(zhí)行CRUD操作,框架在后臺替我們完成所有的事情,開發(fā)人員不用再寫SQL了

  3. JPQL查詢語言:通過面向對象而非面向數(shù)據庫的查詢語言查詢數(shù)據,避免程序的SQL語句緊密耦合。


接下來我們繼續(xù)說一下Hibernate是啥?Hibernate是Java中的對象關系映射解決方案。對象關系映射或ORM框架是將應用程序數(shù)據模型對象映射到關系數(shù)據庫表的技術。

Hibernate 不僅關注于從 Java 類到數(shù)據庫表的映射,也有 Java 數(shù)據類型到 SQL 數(shù)據類型的映射。

Hibernate和JPA是什么關系呢?

上面我們介紹到JPA是Java EE 5規(guī)范中提出的Java持久化接口,而Hibernate是一個ORM框架。

JPA和Hibernate的關系:

  1. JPA是一個規(guī)范,而不是框架

  2. Hibernate是JPA的一種實現(xiàn),是一個框架


那么Spring Data是啥?SpringData是Spring 社區(qū)的一個子項目,主要用于簡化數(shù)據(關系型&非關系型)訪問,其主要目標是使得數(shù)據庫的訪問變得方便快捷。

1.它提供很多模板操作

  • Spring Data Elasticsearch

  • Spring Data MongoDB

  • Spring Data Redis

  • Spring Data Solr

2.強大的Repository和定制的數(shù)據儲存對象的抽象映射

3.對數(shù)據訪問對象的支持


Spring Data JPA是在實現(xiàn)了JPA規(guī)范的基礎上封裝的一套JPA應用框架。雖然ORM框架都實現(xiàn)了JPA規(guī)范,但是在不同的ORM框架之間切換仍然需要編寫不同的代碼。

而使用SpringData JPA能夠方便大家在不同的ORM框架之間進行切換而不要更改代碼。Spring Data JPA旨在通過將統(tǒng)一ORM框架的訪問持久層的操作,來提高開發(fā)人的效率。



Spring Data JPA給我們提供主要的類和接口。

Repository接口:

Repository

CrudRepository

JpaRepository

Repository實現(xiàn)類:

SimpleJpaRepository

QueryDslJpaRepository

以上這些類和接口就是我們以后在使用Spring Data JPA的時候需要掌握的。


Spring Data JPA和Hibernate的關系:

Hibernate其實是JPA的一種實現(xiàn),而Spring Data JPA是一個JPA數(shù)據訪問抽象。

也就是說SpringData JPA不是一個實現(xiàn)或JPA提供的程序,它只是一個抽象層,主要用于減少為各種持久層存儲實現(xiàn)數(shù)據訪問層所需的樣板代碼量。但是它還是需要JPA提供實現(xiàn)程序,其實Spring Data JPA底層就是使用的Hibernate實現(xiàn)。


有沒有被繞暈?總結一下:

  1. Hibernate是JPA的一種實現(xiàn),是一個框架

  2. Spring Data JPA是一種JPA的抽象層,底層依賴Hibernate


今天在這里主要給大家介紹了JPA、Hibernate、以及Spring Data JPA的概念以及三者的關系,讓大家對這些常用的持久層規(guī)范和框架有一個清晰的認識。

相信大家在以后再接觸到其他的同類ORM框架或者其他持久層框架的時候就能更加的游刃有余。


標簽: java
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數(shù)據分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接