javascript
Spring Data JPA教程:简介
創(chuàng)建使用Java Persistence API的存儲(chǔ)庫(kù)是一個(gè)繁瑣的過(guò)程,需要大量時(shí)間,并且需要大量樣板代碼。 通過(guò)執(zhí)行以下步驟,我們可以消除一些樣板代碼:
這種方法的問(wèn)題在于,我們?nèi)匀槐仨毦帉懹糜趧?chuàng)建數(shù)據(jù)庫(kù)查詢并調(diào)用它們的代碼。 更糟的是,每次要?jiǎng)?chuàng)建新的數(shù)據(jù)庫(kù)查詢時(shí),我們都必須這樣做。 這是浪費(fèi)時(shí)間 。
如果我告訴您我們可以創(chuàng)建JPA存儲(chǔ)庫(kù)而無(wú)需編寫任何樣板代碼,您會(huì)怎么說(shuō)?
很有可能您可能不相信我,但是Spring Data JPA可以幫助我們做到這一點(diǎn)。 Spring Data JPA項(xiàng)目的網(wǎng)站指出 :
實(shí)現(xiàn)應(yīng)用程序的數(shù)據(jù)訪問(wèn)層已經(jīng)很長(zhǎng)一段時(shí)間了。 為了執(zhí)行簡(jiǎn)單查詢以及執(zhí)行分頁(yè)和審核,必須編寫太多樣板代碼。 Spring Data JPA旨在通過(guò)將工作量減少到實(shí)際需要的數(shù)量來(lái)顯著改善數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)。 作為開(kāi)發(fā)人員,您將編寫包括自定義finder方法在內(nèi)的存儲(chǔ)庫(kù)接口,Spring會(huì)自動(dòng)提供實(shí)現(xiàn)
這篇博客文章介紹了Spring Data JPA。 我們將學(xué)習(xí)Spring Data JPA的真正含義,并快速瀏覽一下Spring Data存儲(chǔ)庫(kù)接口。
讓我們開(kāi)始吧。
什么是Spring Data JPA?
Spring Data JPA不是JPA提供程序 。 它是一個(gè)庫(kù)/框架,在我們的JPA提供程序的頂部添加了額外的抽象層。 如果我們決定使用Spring Data JPA,則我們應(yīng)用程序的存儲(chǔ)庫(kù)層包含以下三層:
- Spring Data JPA通過(guò)擴(kuò)展Sp??ring Data存儲(chǔ)庫(kù)接口為創(chuàng)建JPA存儲(chǔ)庫(kù)提供支持。
- Spring Data Commons提供了特定于數(shù)據(jù)存儲(chǔ)的Spring Data項(xiàng)目共享的基礎(chǔ)結(jié)構(gòu)。
- JPA Provider實(shí)現(xiàn)Java Persistence API。
下圖說(shuō)明了存儲(chǔ)庫(kù)層的結(jié)構(gòu):
補(bǔ)充閱讀:
- Spring Data JPA與JPA:有什么區(qū)別?
乍一看,Spring Data JPA似乎使我們的應(yīng)用程序變得更加復(fù)雜。 它的確在我們的存儲(chǔ)庫(kù)層中增加了一層,但是與此同時(shí),它使我們無(wú)需編寫任何樣板代碼。
聽(tīng)起來(lái)這是一個(gè)不錯(cuò)的權(quán)衡。 對(duì)?
Spring數(shù)據(jù)存儲(chǔ)庫(kù)簡(jiǎn)介
Spring Data JPA的功能在于由Spring Data Commons項(xiàng)目提供并由特定于數(shù)據(jù)存儲(chǔ)的子項(xiàng)目擴(kuò)展的存儲(chǔ)庫(kù)抽象。
我們可以使用Spring Data JPA而不用注意存儲(chǔ)庫(kù)抽象的實(shí)際實(shí)現(xiàn),但是我們必須熟悉Spring Data存儲(chǔ)庫(kù)接口。 這些接口描述如下:
首先 ,Spring Data Commons項(xiàng)目提供以下接口:
- Repository <T,ID擴(kuò)展為Serializable>接口是一個(gè)標(biāo)記接口,具有兩個(gè)用途:
- 它捕獲托管實(shí)體的類型和實(shí)體ID的類型。
- 它有助于Spring容器在類路徑掃描期間發(fā)現(xiàn)“具體的”存儲(chǔ)庫(kù)接口。
- CrudRepository <T,ID擴(kuò)展為Serializable>接口為受管實(shí)體提供CRUD操作。
- PagingAndSortingRepository <T,ID擴(kuò)展為Serializable>接口聲明用于對(duì)從數(shù)據(jù)庫(kù)中檢索到的實(shí)體進(jìn)行排序和分頁(yè)的方法。
- QueryDslPredicateExecutor <T>接口不是“存儲(chǔ)庫(kù)接口”。 它聲明使用QueryDsl 謂詞對(duì)象從數(shù)據(jù)庫(kù)檢索實(shí)體的方法。
其次 ,Spring Data JPA項(xiàng)目提供以下接口:
- JpaRepository <T,ID擴(kuò)展為Serializable>接口是JPA特定的存儲(chǔ)庫(kù)接口,它將公共存儲(chǔ)庫(kù)接口聲明的方法組合在單個(gè)接口后面。
- JpaSpecificationExecutor <T>接口不是“存儲(chǔ)庫(kù)接口”。 它聲明使用通過(guò)使用JPA標(biāo)準(zhǔn)API的Specification <T>對(duì)象從數(shù)據(jù)庫(kù)檢索實(shí)體的方法。
存儲(chǔ)庫(kù)層次結(jié)構(gòu)如下所示:
很好,但是我們?nèi)绾问褂盟鼈兡?#xff1f;
這是一個(gè)公平的問(wèn)題。 本教程的下一部分將回答該問(wèn)題,但實(shí)際上我們必須遵循以下步驟:
讓我們繼續(xù)并總結(jié)從這篇博客文章中學(xué)到的知識(shí)。
摘要
這篇博客文章教會(huì)了我們兩件事:
- Spring Data JPA不是JPA提供者。 它只是“隱藏”了其存儲(chǔ)庫(kù)抽象之后的Java Persistence API(和JPA提供程序)。
- Spring Data提供了多個(gè)用于不同目的的存儲(chǔ)庫(kù)接口。
本教程的下一部分描述了如何獲取所需的依賴關(guān)系。
如果您想了解更多有關(guān)Spring Data JPA的信息,請(qǐng)閱讀我的Spring Data JPA教程 。
翻譯自: https://www.javacodegeeks.com/2014/12/spring-data-jpa-tutorial-introduction.html
總結(jié)
以上是生活随笔為你收集整理的Spring Data JPA教程:简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 李苦禅擅长画什么画 李苦禅的绘画风格
- 下一篇: Hystrix中的批量(折叠)请求