標籤:lazy 內串連 操作 outer add 本地 ext als .com
Hibernate查詢方式
1 對象導航查詢 (1)根據id查詢某個客戶,再查詢這個客戶裡面所有的連絡人 2 OID查詢 (1)根據id查詢某一條記錄,返回對象 3 HQL查詢 (1)Query對象,寫hql語句實現查詢 4 QBC查詢 (1)Criteria對象 5 本地sql查詢 (1)SQLQuery對象,使用普通sql實現查詢 |
對象導航查詢
1 查詢某個客戶裡面所有連絡人過程,使用對象導航實現 2 代碼 |
OID查詢
1 根據id查詢記錄 (1)調用session裡面的get方法實現 |
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對象裡面的方法得到結果 2 查詢所有: from 實體類名稱 |
條件查詢
1 hql條件查詢語句寫法: (1) from 實體類名稱 where 實體類屬性名稱=? and實體類屬性名稱=? from 實體類名稱 where 實體類屬性名稱 like ? 2 代碼 模糊查詢 |
排序查詢
1 hql排序語句寫法 (1)from 實體類名稱 order by 實體類屬性名稱 asc/desc |
分頁查詢
1 mysql實現分頁 (1)使用關鍵字 limit實現 2 在hql中實現分頁 (1)在hql操作中,在語句裡面不能寫limit,hibernate的Query對象封裝兩個方法實現分頁操作 |
投影查詢
1 投影查詢:查詢不是所有欄位值,而是部分欄位的值 2 投影查詢hql語句寫法: (1)select 實體類屬性名稱1, 實體類屬性名稱2 from 實體類名稱 (2)select 後面不能寫 * ,不支援的 3 具體實現 |
聚集合函式使用
1 常用的聚集合函式 (1)count、sum、avg、max、min 2 hql聚集合函式語句寫法 (1)查詢表記錄數 - select count(*) from 實體類名稱 |
QBC查詢
1 使用hql查詢需要寫hql語句實現,但是使用qbc時候,不需要寫語句了,使用方法實現 2 使用qbc時候,操作實體類和屬性 3 使用qbc,使用Criteria對象實現 |
查詢所有
條件查詢
排序查詢
分頁查詢
統計查詢
離線查詢
1 servlet調用service,service調用dao (1)在dao裡面對資料庫crud操作 (2)在dao裡面使用hibernate架構,使用hibernate架構時候,調用session裡面的方法實現功能 (3)在後面ssh練習中具體應用 |
HQL多表查詢Mysql裡面多表查詢
HQL實現多表查詢
Hql多表查詢 (1)內串連 (2)左外串連 (3)右外串連 (4)迫切內串連 (5)迫切左外串連 |
HQL內串連
1 內串連查詢hql語句寫法:以客戶和連絡人為例 (1)from Customer c inner join c.setLinkMan 返回list,list裡面每部分是數組形式 2 示範迫切內串連 (1)迫切內串連和內串連底層實現一樣的 (2)區別:使用內串連返回list中每部分是數組,迫切內串連返回list每部分是對象 (3)hql語句寫法 - from Customer c inner join fetch c.setLinkMan |
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每部分是對象 1 右外串連hql語句: (1)from Customer c right outer join c.setLinkMan |
Hibernate檢索策略檢索策略的概念
1 hibernate檢索策略分為兩類: (1)立即查詢:根據id查詢,調用get方法,一調用get方法馬上發送語句查詢資料庫 (2)延遲查詢:根據id查詢,還有load方法,調用load方法不會馬上發送語句查詢資料,只有得到對象裡面的值時候才會發送語句查詢資料庫 2 延遲查詢分成兩類: (1)類層級延遲:根據id查詢返回實體類對象,調用load方法不會馬上發送語句 (2)關聯層級延遲: - 查詢某個客戶,再查詢這個客戶的所有連絡人,查詢客戶的所有連絡人的過程是否需要延遲,這個過程稱為關聯層級延遲 |
關聯層級延遲操作
1 在對應檔中進行配置實現 (1)根據客戶得到所有的連絡人,在客戶對應檔中配置 2 在set標籤上使用屬性 (1)fetch:值select(預設) (2)lazy:值 - true:延遲(預設) - false:不延遲 - extra:極其延遲 (1)調用get之後,發送兩條sql語句 (1)極其懶惰,要什麼值給什麼值 |
批量抓取
1 查詢所有的客戶,返回list集合,遍曆list集合,得到每個客戶,得到每個客戶的所有連絡人 (1)上面作業碼,發送多條sql語句 2 在客戶的對應檔中,set標籤配置 (1)batch-size值,值越大發送語句越少 |
Hibernate查詢方式