掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
大家好,我是yes。

成都創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),慶陽網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:慶陽等地區(qū)。慶陽做網(wǎng)站價格咨詢:028-86922220
國慶假期接近尾聲,明天最后一天了,要開始收收心啦~
今天講講一個初學(xué)者(或許一些老手)可能沒去搞懂的幾個概念:Hibernate、JPA、Spring Data JPA 之間的關(guān)聯(lián)。
嘿嘿,前段時間有位同學(xué)說去大廠面試被問了這個。
好了,話不多說,發(fā)車!
Hibernate 就不多介紹了, 一個 ORM 框架,它提供了 HQL 來屏蔽底層不同數(shù)據(jù)庫廠商 SQL 之間的差異,大大提升了程序的可移植性。
也提供了一套 Criteria API 來進(jìn)行數(shù)據(jù)操作,使用這套 API 不需要關(guān)注底層 SQL 的實(shí)現(xiàn),直接操作 API 即可。
JPA 是一個 Java 持久化規(guī)范,在 JDK 5 后提出的。
它的提出主要是為了整合市面上已有的 ORM 框架,如 Hibernate、EclipseLink 等。
官方覺得:你們搞框架可以,但是得按照我 Java 定的規(guī)矩來。
只有統(tǒng)一了接口,我們程序員使用的時候才會便捷。但它只是一個規(guī)范,具體實(shí)現(xiàn)還是由這些 ORM 框架來完成。
所以 JPA 的提出是為了屏蔽市面上各大 ORM 框架的差異,便于開發(fā)人員的使用。
雖然市面上很多 ORM 框架都實(shí)現(xiàn)了 JPA 規(guī)范,但它們基于 JPA 基礎(chǔ)又做了一些擴(kuò)展,這使得使用 JPA 的時候不能無縫切換底層的 ORM 框架。
所以 Spring 又提出了 Spring Data JPA 。
Spring Data JPA 符合 JPA 規(guī)范,但它是一個抽象層,上接 JPA 下接各大 ORM 框架,簡化了持久層開發(fā)且屏蔽了各大 ORM 框架的差異,兩個字,舒服。
JPA 是規(guī)范,統(tǒng)一了規(guī)范才便于使用。
Hibernate 是 ORM 框架,它是 JPA 這個規(guī)范的一個實(shí)現(xiàn)。
Spring Data JPA 則是 Spring 提出的,因?yàn)椴煌?ORM 框架雖說有 JPA 規(guī)范約束,但是還是有不同的擴(kuò)展,不易無縫替換,所以基于 JPA 添加了一個抽象層,來屏蔽不同 ORM 框架的差距。
這其實(shí)類似于 Spring 自己定義一個標(biāo)準(zhǔn)來統(tǒng)一 Spring 對持久層的支持,這樣對于我們這些在 Spring 使用 ORM 框架的開發(fā)來說,不需要管底層 ORM 怎么變了。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流