1. 程式人生 > >Hibernate零基礎回顧-04

Hibernate零基礎回顧-04

1、HQL查詢詳解

hqlhibernate query languagehibernate提供一種查詢語言,hql語言和普通sql很相似,

區別:普通sql操作資料庫表和欄位,hql操作實體類和屬性

查詢所有: from 實體類名稱

條件查詢: from 實體類名稱 where 屬性名稱=?

模糊查詢

排序查詢: from 實體類名稱 order by 實體類屬性名稱 asc/desc

分頁查詢:hql操作中,在語句裡面不能寫limithibernateQuery物件封裝兩個方法實現分頁操作

投影查詢:查詢不是所有欄位值,而是部分欄位的值

聚合函式查詢

內連線

setLinkMan 是當前類中另外一個物件的屬性名

返回listlist裡面每部分是陣列形式

迫切內連線

(1)迫切內連線和內連線底層實現一樣的

2)區別:使用內連線返回list中每部分是陣列,迫切內連線返回list每部分是物件

  from  Customer  c  inner  join  fetch  c.setLinkMan

左外連線

左外連線 from  Customer  c  left  outer  join

 c.setLinkMan

迫切左外連線 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值,值越大發送語句越少