Spring Data JPA相關概念,以及自定義查詢

一:什麼是Spring Data JPA:
1:Spring Data JPA是在JavaEE5.0後出現的—用於對象持久化的API
2:使得應用文件以統一的方式訪問持久層
在這裏插入圖片描述
二:JPA與Hibernate的關係:
1:JPA 是 Hibernate 的一個抽象(就像JDBC和JDBC驅動的關係);
2:JPA 是規範:JPA 本質上就是一種 ORM 規範,不是ORM 框架,這是因爲 JPA 並未提供 ORM 實現,它只是制訂了一些規範,提供了一些編程的 API 接口,但具體實現則由 ORM 廠商提供實現;
3:Hibernate 是實現:Hibernate 除了作爲 ORM 框架之外,它也是一種 JPA 實現
從功能上來說, JPA 是 Hibernate 功能的一個子集

三:Spring Data JPA的優勢:
1:標準化: 提供相同的 API,這保證了基於JPA 開發的企業應用能夠經過少量的修改就能夠在不同的 JPA 框架下運行。
2:簡單易用,集成方便: JPA 的主要目標之一就是提供更加簡單的編程模型,在 JPA 框架下創建實體和創建 Java 類一樣簡單,只需要使用 javax.persistence.Entity 進行註解;JPA 的框架和接口也都非常簡單。
3:可媲美JDBC的查詢能力: JPA的查詢語言是面向對象的,JPA定義了獨特的JPQL,而且能夠支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高級查詢特性,甚至還能夠支持子查詢。
4:支持面向對象的高級特性: JPA 中能夠支持面向對象的高級特性,如類之間的繼承、多態和類之間的複雜關係,最大限度的使用面向對象的模型
四:Spring Data JPA使用自定義查詢的時候一些注意問題:
一:正確的寫法
當查詢內容與返回值泛型屬性內容完全一致(個數,類型),有 返回值,不報錯
在這裏插入圖片描述
當查詢內容與返回值泛型內容不同的時候,不能寫<對象>,應該直接返回一個list 或者list,但是前者只有值,沒有鍵,無法區別是哪個值。後面那個則是一個MAP形式,只不過沒有查詢的內容,會返回null值,可以用序列化的方式解決,在Vo實體類中用序列化註解@JsonInclude(JsonInclude.Include.NON_NULL) ,便會屏蔽掉null值。
二:幾種會報錯的情況
當查詢的內容是返回值泛型的子集的情況下,會報錯:
Could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSetcould not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章