Spring-data-jpa 讓數據訪問更簡單、更優雅

Hibernate的基於Entity對象模型的數據ORM映射管理

  1. 門檻較高,深度應用比較複雜;
  2. 移植性好,兼容不一樣的數據庫的操做;
  3. 數據訪問層操做簡單,基於HQL操做更加面向對象;
  4. 級聯操做比較方便

Mybatis 的基於原生SQL的數據ORM映射管理數據庫

  1. 使用簡單,便於快速上手;
  2. 遷移性太差,基於本地化的原生SQL操做;
  3. 訪問粒度較小,複雜狀況下的使用更佳靈活,方便;
  4. 繁瑣的SQL維護,尤爲是通用性的重複語句;

JPA不屬於ORM框架,只是一套持久化API使用規範,可以更加靈活方便的管理數據庫操做。從必定意義上來說,吸收了Hibernate和Mybatis各自的優缺點,兼容並舉的達到了一個相對完美的平衡。app

JpaRepository 基於約定的方法名查詢規範:

@Query 註解查詢規範(支持HQL/SQL):框架

Specification API進行復雜組合條件查詢:工具

 

 

附錄一個超簡單的使用場景事例,用於描述SpringDataJPA的操做(僅用於說明,哈哈哈):ui

Entity和DB的映射文件:UserInfospa

應用於業務場景的DTO包裝:UserDTO.net

Entity和DTO的映射工具:UserMapper對象

SpringDataJPA數據庫操做類:UserRepositoryblog

業務邏輯層的Service:UserService排序

 

以下提供更加複雜,強大的使用場景實例:

返回列表並排序:

Top1查詢:

HQL修改刪除操做:

count統計數量:

in查詢操做:

HQL組合查詢,並賦值到DTO組裝類:

原生SQL複雜統計查詢:

HQL組合,in查詢

 

知足你能想象到的,用到的各類組合,除非到了萬不得已,須要代碼層面的高級組合查詢。那個時候你就能夠使用代碼層面,靈活的自定義組合查詢。不過80%的狀況,使用JpaRepository的API已經足夠了。

 
Repository.findAll((root, criteriaQuery, criteriaBuilder) -> {}
相關文章
相關標籤/搜索