Hibernate零基礎回顧-04
1、HQL查詢詳解
hql:hibernate query language,hibernate提供一種查詢語言,hql語言和普通sql很相似,
區別:普通sql操作資料庫表和欄位,hql操作實體類和屬性
查詢所有: from 實體類名稱
條件查詢: from 實體類名稱 where 屬性名稱=?
模糊查詢
排序查詢: from 實體類名稱 order by 實體類屬性名稱 asc/desc
分頁查詢:hql操作中,在語句裡面不能寫limit,hibernate的Query物件封裝兩個方法實現分頁操作
投影查詢:查詢不是所有欄位值,而是部分欄位的值
聚合函式查詢
內連線
setLinkMan 是當前類中另外一個物件的屬性名
返回list,list裡面每部分是陣列形式
迫切內連線
(1)迫切內連線和內連線底層實現一樣的
(2)區別:使用內連線返回list中每部分是陣列,迫切內連線返回list每部分是物件
from Customer c inner join fetch c.setLinkMan
左外連線
左外連線 from Customer c left outer join
迫切左外連線 from Customer c left outer join fetch c.setLinkMan
左外連線返回list中每部分是陣列,迫切左外連線返回list每部分是物件
右外連線
from Customer c right outer join c.setLinkMan
2、QBC查詢詳解
1 使用hql查詢需要寫hql語句實現,但是使用qbc時候,不需要寫語句了,使用方法實現
2 使用qbc時候,操作實體類和屬性
3 使用qbc,使用Criteria物件實現
查詢所有
條件查詢
模糊查詢
排序查詢
分頁查詢
統計查詢
離線查詢
3、Hibernate檢索策略
立即查詢:根據id查詢,呼叫get方法,一呼叫get方法馬上傳送語句查詢資料庫
延遲查詢:呼叫load方法不會馬上傳送語句查詢資料,只有得到物件裡面的值時候才會傳送語句查詢資料庫
延遲查詢分類:
(1)類級別延遲:根據id查詢返回實體類物件,呼叫load方法不會馬上傳送語句
(2)關聯級別延遲:查詢一個類中外來鍵表的集合時
關聯級別延遲操作
在set標籤上使用屬性
(1)fetch:值select(預設)
(2)lazy:值
true:延遲(預設)
false:不延遲
extra:極其延遲
極其延遲,需要什麼值就查什麼值,其他值一概不要。
批量抓取
場景:查詢所有的客戶,返回list集合,遍歷list集合,得到每個客戶,得到每個客戶的所有聯絡人
batch-size值,值越大發送語句越少