1. 程式人生 > >SpringData JPA 框架入門使用

SpringData JPA 框架入門使用

1.SpringData JPA的介紹

可以理解為JPA規範的再次封裝抽象,底層還是使用了Hibernate
的JPA技術實現,引用JPQL(Java Persistence Query Language)查
詢語言,屬於Spring整個生態體系的一部分。隨著Spring Boot和
Spring Cloud在市場上的流行,Spring Data JPA也逐漸進入大家的
視野,它們組成有機的整體,使用起來比較方便,加快了開發的效
率,使開發者不需要關心和配置更多的東西,完全可以沉浸在Spring
的完整生態標準實現下。JPA上手簡單,開發效率高,對物件的支援
比較好,又有很大的靈活性,市場的認可度越來越高。

JPA是Java Persistence API的簡稱,中文名為Java持久層API,
是JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實
體物件持久化到資料庫中。
Sun引入新的JPA ORM規範出於兩個原因:其一,簡化現有Java
EE和Java SE應用開發工作;其二,Sun希望整合ORM技術,實現天下
歸一。
JPA包括以下3方面的內容:
(1)一套API標準。在javax.persistence的包下面,用來操作
實體物件,執行CRUD操作,框架在後臺替代我們完成所有的事情,開
發者從煩瑣的JDBC和SQL程式碼中解脫出來。
(2)面向物件的查詢語言:Java Persistence Query
Language(JPQL)。這是持久化操作中很重要的一個方面,通過面向
物件而非面向資料庫的查詢語言查詢資料,避免程式的SQL語句緊密
耦合。
(3)ORM(object/relational metadata)元資料的對映。JPA
支援XML和JDK5.0註解兩種元資料的形式,元資料描述物件和表之間
的對映關係,框架據此將實體物件持久化到資料庫表中。

主要子專案(Main modules)如下:

Spring Data Commons
Spring Data Gemfire
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data REST
Spring Data Redis
Spring Data for Apache Cassandra
Spring Data for Apache Solr

2.開發實戰

1.建立一個數據的新使用者並附上許可權:

在這裡插入圖片描述

2.建立一個表:

在這裡插入圖片描述

3.利用IntelliJ IDEA建立Example1

在這裡插入圖片描述

4.修改配置檔案

在這裡插入圖片描述

5.java實體類

在這裡插入圖片描述

6.dao

建立一個Repository。檔案為
src/main/java/example/example1/UserRepository.java。
在這裡插入圖片描述

7.contoller

建立一個Controller
在這裡插入圖片描述

8.直接執行Example1Application的main函式。開啟Example1Application,內容如下

在這裡插入圖片描述

3.詳解

1.主要架構

在這裡插入圖片描述

2.層次關係

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3.例項

在這裡插入圖片描述

4.介面

1.CrudRepository interface內容

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

使用示例

在這裡插入圖片描述
在這裡插入圖片描述

PagingAndSortingRepository方法詳解

通過類的關係圖,我們可以看到PagingAndSortingRepository繼承CrudRepository所有的基本方法,它增加了分頁和排序等對查詢結果進行限制的基本的、常用的、通用的一些分頁方法。
在這裡插入圖片描述
(1) 根據排序取所有物件的集合。
(2) 根據分頁和排序進行查詢,並用Page物件封裝。Pageable
物件包含分頁和Sort物件。
PagingAndSortingRepository和CrudRepository都是Spring Data Common的標準介面,如果我們採用JPA,那它對應的實現類就是Spring Data JPA的model裡面的SimpleJpaRepository。如果是其他NoSQL的實現Mongodb,那它的實現就在Spring Data Mongodb的model裡面。
在這裡插入圖片描述
通過上面的原始碼我們可以發現這些查詢都會用到後面章節要講的Specification查詢方法。

PagingAndSortingRepository使用示例

只需要繼承PagingAndSortingRepository的介面即可,其他不用做任何改動。UserPagingAndSortingRepository修改如下:
在這裡插入圖片描述
在這裡插入圖片描述

2.JpaRepository介面

JpaRepository到這裡可以進入分水嶺了,上面的那些都是Spring Data為了相容NoSQL而進行的一些抽象封裝,從JpaRepository開始是對關係型資料庫進行抽象封裝。從類圖可以看得出來它繼承了PagingAndSortingRepository類,也就繼承了其所有方法,並且實現類也是SimpleJpaRepository。從類圖上還可以看出JpaRepository繼承和擁有了QueryByExampleExecutor的相關方法
在這裡插入圖片描述
通過原始碼和CrudRepository相比較,它支援Query By Example,批量刪除,提高刪除效率,手動重新整理資料庫的更改方法,並將預設實現的查詢結果變成了List。

使用方法

在這裡插入圖片描述