此文章為自己書寫,在Word上做的筆記,然後拷貝到這上邊的,無任何抄襲。另外若是程式有任何問題可以評論,也可私信我。
HQL多表查詢
mysql的多表查詢
1.内連接配接
内連接配接查詢的是兩個表有關聯的資料。
2.左外連接配接
代表查詢的結果是左邊的資料都存在,而右邊的資料依據左邊存在而顯示。
3.右外連接配接
代表查詢的結果是右邊的資料都存在,而左邊的資料依據右邊存在而顯示。
HQL實作多表查詢
内連接配接
内連接配接查詢hql語句寫法:以客戶與聯系人為例
(1)from Customer c inner join c.linkmans
傳回的是list,list的每部分都是數組的形式
左外連接配接
1左外連接配接的hql語句的寫法
(1)from Customer c left outer join c.linkmans
右外連接配接
1右外連接配接的hql語句的寫法
(1)from Customer c right outer join c.linkmans
迫切内連接配接
(1)迫切内連接配接和内連接配接底層實作是一樣的
(2)差別:使用内連接配接傳回的list中每部分是數組,迫切内連接配接傳回的list的每部分都是對象的形式
(3)hql語句寫法:
from Customer c inner join fetch c.linkmans
迫切左外連接配接
1迫切左外連接配接的hql語句的寫法
(1)from Customer c left outer join fetch c.linkmans
2兩者的聯系與差別與内連接配接和迫切内連接配接相似
Hibernate檢索政策
檢索政策的概念
1.hibernate檢索政策分為兩類:
(1)立即檢索(查詢),根據id進行查詢,調用get方法,一調用get方法就馬上發送語句進行查詢資料庫
(2)延遲檢索(查詢),根據id進行查詢,還有load方法,調用load方法不會馬上去查詢資料庫,隻有得到對象裡邊的除了id以外的值的時候才會發送語句查詢資料庫
2.延遲查詢分成兩類
(1)類級别的延遲:根據id查詢傳回實體類的對象,調用load方法不會馬上發送語句
(2)關聯級别的延遲:
查詢出某個客戶,再查詢出這個客戶的所有聯系人,查詢客戶所有聯系人的過程是否需要延遲,這個過程就稱為關聯級别的延遲
關聯級别延遲操作
1.在映射檔案中進行配置來實作
(1)根據客戶得到相關所有的聯系人,在客戶映射檔案中進行配置
2.在set标簽上使用屬性
(1)fetch:預設值select
(2)lazy:預設值true
true:延遲
false:不延遲
extra:極其延遲
執行get方法時也延遲查詢,隻發送了一條sql語句。
調用get方法之後發送了兩條sql語句。
調用size方法時才隻發送一條sql語句,而且隻發送顯示數量的語句。
批量查詢
1.查詢所有的客戶,傳回list集合,周遊list集合,得到每個客戶,進而得到每個客戶的所有聯系人
(1)上面的操作代碼,能實作功能,但是需要發送多條sql語句
2.在客戶的映射檔案中,set标簽配置
(1)配置batch-size屬性,值越大則效率越高