天天看點

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

hibernate查詢方式

1 對象導航查詢

(1)根據id查詢某個客戶,再查詢這個客戶裡面所有的聯系人

2 OID查詢

(1)根據id查詢某一條記錄,傳回對象

3 HQL查詢

(1)Query對象,寫hql語句實作查詢

4 QBC查詢

(1)Criteria對象

5 本地sql查詢

(1)SQLQuery對象,使用普通sql實作查詢

對象導航查詢

1 查詢某個客戶裡面所有聯系人過程,使用對象導航實作

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

2 代碼

public class TestQuery{
    Session session = null;
    Transaction transaction =null;
    SessionFactory sessionFactory  =null;

    @Test
    public void testTogertherSave(){
        try{
            //與本地綁定的session
            sessionFactory = HibernateUtil.getSessionFactory();
            session=   sessionFactory.openSession();
            transaction=session.beginTransaction();
            //查詢客戶id1的客戶,然後在查詢id1的客戶下面的所有聯系人
            Customer customer = session.get(Customer.class, 1);
            Set<LinkMan> linkMEN = customer.getSet();
            for (LinkMan man : linkMEN) {
                System.out.println(man);
            }
            //送出
            transaction.commit();
        }catch (Exception e){
            e.printStackTrace();
            //復原
            transaction.rollback();
        }finally {
            session.close();
            sessionFactory.close();
        }
    }
}
           

OID查詢

1 根據id查詢記錄

(1)調用session裡面的get方法實作

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

HQL查詢

1 hql:

hibernate query language

,hibernate提供一種查詢語言,hql語言和普通sql很相似,差別:普通sql操作資料庫表和字段,hql操作實體類和屬性

2 常用的hql語句

(1)查詢所有: from 實體類名稱

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

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

3 使用hql查詢操作時候,使用Query對象

(1)建立Query對象,寫hql語句

(2)調用query對象裡面的方法得到結果

查詢所有

1 查詢所有客戶記錄

(1)建立Query對象,寫hql語句

(2)調用query對象裡面的方法得到結果

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

條件查詢

1 hql條件查詢語句寫法:

(1) from 實體類名稱 where 實體類屬性名稱=? and實體類屬性名稱=?

from 實體類名稱 where 實體類屬性名稱 like ?

2 代碼

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

模糊查詢

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

排序查詢

1 hql排序語句寫法

(1)from 實體類名稱 order by 實體類屬性名稱 asc/desc

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

分頁查詢

1 mysql實作分頁

(1)使用關鍵字 limit實作

select * from xxx where cname = ? limit 0 3

2 在hql中實作分頁

(1)在hql操作中,在語句裡面不能寫limit,hibernate的Query對象封裝兩個方法實作分頁操作

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

投影查詢

1 投影查詢:查詢不是所有字段值,而是部分字段的值

2 投影查詢hql語句寫法:

(1)select 實體類屬性名稱1, 實體類屬性名稱2 from 實體類名稱

(2)select 後面不能寫 * ,不支援的

3 具體實作

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

聚集函數使用

1 常用的聚集函數

(1)count、sum、avg、max、min

2 hql聚集函數語句寫法

(1)查詢表記錄數

  • select count(*) from 實體類名稱
    Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

QBC查詢

1 使用hql查詢需要寫hql語句實作,但是使用qbc時候,不需要寫語句了,使用方法實作

2 使用qbc時候,操作實體類和屬性

3 使用qbc,使用Criteria對象實作

查詢所有

1 建立Criteria對象

2 調用方法得到結果

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

條件查詢

1 沒有語句,使用封裝的方法實作

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

Restricions類裡面有大量靜态方法

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

排序查詢

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

分頁查詢

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

統計查詢

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

離線查詢

1 servlet調用service,service調用dao

(1)在dao裡面對資料庫crud操作

(2)在dao裡面使用hibernate架構,使用hibernate架構時候,調用session裡面的方法實作功能

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

HQL多表查詢

1 内連接配接

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

2 左外連接配接

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

3 右外連接配接

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

Hql多表查詢

(1)内連接配接

(2)左外連接配接

(3)右外連接配接

(4)迫切内連接配接

(5)迫切左外連接配接

HQL内連接配接

1 内連接配接查詢hql語句寫法:以客戶和聯系人為例

(1)from Customer c inner join c.setLinkMan

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

傳回list,list裡面每部分是數組形式

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

2 示範迫切内連接配接

(1)迫切内連接配接和内連接配接底層實作一樣的

(2)差別:使用内連接配接傳回list中每部分是數組,迫切内連接配接傳回list每部分是對象

(3)hql語句寫法

  • from Customer c inner join

    fetch

    c.setLinkMan
    Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

HQL左外連接配接

1 左外連接配接hql語句:

(1)from Customer c

left outer join

c.setLinkMan

(2)迫切左外連接配接from Customer c left outer join fetch c.setLinkMan

2 左外連接配接傳回list中每部分是數組,迫切左外連接配接傳回list每部分是對象

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

1 右外連接配接hql語句:

(1)from Customer c right outer join c.setLinkMan

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

Hibernate檢索政策

檢索政策的概念

1 hibernate檢索政策分為兩類:

(1)立即查詢:根據id查詢,調用get方法,一調用get方法馬上發送語句查詢資料庫

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

(2)延遲查詢:根據id查詢,還有load方法,調用load方法不會馬上發送語句查詢資料,隻有得到對象裡面的值時候才會發送語句查詢資料庫

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

2 延遲查詢分成兩類:

(1)類級别延遲:根據id查詢傳回實體類對象,調用load方法不會馬上發送語句

(2)關聯級别延遲:

  • 查詢某個客戶,再查詢這個客戶的所有聯系人,查詢客戶的所有聯系人的過程是否需要延遲,這個過程稱為關聯級别延遲
Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

關聯級别延遲操作

1 在映射檔案中進行配置實作

(1)根據客戶得到所有的聯系人,在客戶映射檔案中配置

2 在set标簽上使用屬性

(1)fetch:值select(預設)

(2)lazy:值

  • true:延遲(預設)
  • false:不延遲
  • extra:極其延遲
    Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

(1)調用get之後,發送兩條sql語句

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式
Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

(1)極其懶惰,要什麼值給什麼值

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

批量抓取

什麼是抓取政策?

抓取政策是當應用程式需要在(Hibernate實體對象圖的)關聯關系間進行導航的時候,Hibernate

如何擷取關聯對象的政策。

Hibernate的抓取政策是Hibernate提升性能的一種手段,可以在擷取關聯對象的時候,對發送的

語句進行優化,但是往往抓取政策需要和延遲加載一起使用來提升性能。我們首先來學習一下延遲

加載的相關内容吧。

在學習延遲加載内容之前,我們需要了解延遲加載的分類。

1 查詢所有的客戶,傳回list集合,周遊list集合,得到每個客戶,得到每個客戶的所有聯系人

(1)上面操作代碼,發送多條sql語句

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式

2 在客戶的映射檔案中,set标簽配置

(1)batch-size值,值越大發送語句越少

Hibernate筆記(四)hibernate查詢方式、HQL查詢、QBC查詢、HQL多表查詢、hibernate檢索政策hibernate查詢方式