data-JPA概念:
JPA全稱Java Persistence API.JPA通過JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。
ORM映射元數據
JPA支持XML和JDK5.0註解兩種元數據的形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中
自 JPA 伴隨 Java EE 5 發佈以來,受到了各大廠商及開源社區的追捧,各種商用的和開源的 JPA 框架如雨後春筍般出現,爲開發者提供了豐富的選擇。
JPA的底層實現是一些流行的開源ORM(對象關係映射)框架,因此JPA其實也就是java實體對象和關係型數據庫建立起映射關係,通過面向對象編程的思想操作關係型數據庫的規範。
Spring Data JPA 框架,主要針對的就是 Spring 唯一沒有簡化到的業務邏輯代碼,至此,開發者連僅剩的實現持久層業務邏輯的工作都省了,唯一要做的,就只是聲明持久層的接口,其他都交給 Spring Data JPA 來幫你完成!
jpql:
JPQ語句JPQL全稱Java Persistence Query Language。Java持久化查詢語言(JPQL)是一種可移植的查詢語言,旨在以面向對象表達式語言的表達式,將SQL語法和簡單查詢語義綁定在一起·使用這種語言編寫的查詢是可移植的,可以被編譯成所有主流數據庫服務器上的SQL。
JPQL所提供的查詢語法主要分爲三類:
查詢用的 SELECT 語法
更新用的 UPDATE 語法
刪除用的 DELETE 語法
SQL語句是在數據庫空間中對字段,列,行進行操作
JPQL語句是在EJB實體空間中面向對象,屬性進行操作
JPQL必須由JPA的JPQL解析器解析爲SQL才能執行,必須先獲取Query對象
一個基本的 SELECT 語句如下所示:
SELECT u.id, u.name FROM User u WHERE u.age > 10 AND u.age < 20
select name ,age from user; //原生SQL語句
select u.name,u.age from User u; //JPQL語句
select u from User u; //JPQL語句
邏輯運算符 between ,like , in , is null,is empty,member of,not ,and ,or
1 not
"select u from User u where not(u.cityid=?1)"
2 between和sql中一樣
3 in 在給定的值列表中查詢
"select u from User u where u.cityid in(1,2,3)"
4 like ( _ 表示一個字符,%表示任意數量字符 )
xxxx where u.name like ' 張% '
5 is null (實體的屬性是否爲空,即實體屬性映射的字段是否爲空)
"select u from User u where u.cityid is null"
6 is empty (與is null 不同的是,它針對實體的集合屬性 內有沒有元素。
雖然集合對象是存在的,但是集合內沒有元素)
select o from Order o where o.orderItems is empty
條件查詢
1排序查詢 asc升序 desc降序
order by p.age desc,p.birthday asc
關聯查詢(實際工作中仍然會有這種需求)
left join 允許右邊實體表達式的實體爲空,這裏的實體指 集合屬性
inner join 右邊必須存在
"select o from Order o inner join o.orderItems"