Hibernate 檢索方式之 HQL 檢索方式
HQL(Hibernate Query Language) 是面向對象的查詢語言,它和 SQL 查詢語言有些相似。在 Hibernate 提供的各種檢索方式中,HQL 是使用最廣的一種檢索方式,它有如下功能:
-在查詢語句中設定各種查詢條件
-支持投影查詢,即檢索出對象的部分屬性
-支持分頁查詢
-支持連接查詢
-支持分組查詢,允許使用 HAVING 和 GROUP BY 關鍵字
-提供內置聚集函數,如 sum()、min()、max()
-支持子查詢
-支持動態(tài)綁定參數
-能夠調用用戶定義的 SQL 函數或標準的 SQL 函數
HQL 檢索方式包括以下步驟:
-通過 Session 的 createQuery()方法創(chuàng)建一個 Query 對象,它包括一個 HQL 查詢語句。HQL 查詢語句中可以包含命名參數
-動態(tài)綁定參數
-調用 Query 相關方法執(zhí)行查詢語句
Query 接口支持方法鏈編程風格,它的 setXxx()方法返回自身實例,而不是 void 類型
HQL vs SQL:
-HQL 查詢語句是面向對象的,Hibernate 負責解析 HQL 查詢語句,然后根據對象-關系映射文件中的映射信息,把 HQL 查詢語句翻譯成相應的 SQL 查詢語句。HQL 查詢語句中的主體是域模型中的類及類的屬性
-SQL 查詢語句是與關系數據庫綁定在一起的,SQL 查詢語句中的主體是數據庫表及表的字段
綁定參數:
-Hibernate 的參數綁定機制依賴于 JDBC API 中的 PreparedStatement 的預定義 SQL 語句功能
-HQL 參數綁定有兩種形式:
--按參數名字綁定:在 HQL 查詢語句中定義命名參數,命名參數以“:”開頭。
--按參數位置綁定:在 HQL 查詢語句中用“?”來定義參數位置
-相關方法:
--setEntity():把參數與一個持久化類綁定
--setParameter():綁定任意類型的參數。該方法的第三個參數顯式指定 Hibernate 映射類型
HQL 采用 ORDER BY 關鍵字對查詢結果排序
// 1. 創(chuàng)建 Query 對象 String hql = "FROM Employee e WHERE e.id < ?"; Query query = session.createQuery(hql); // 2. 綁定參數 query.setInteger(0, 130); // 3. 執(zhí)行查詢 List<Employee> employees = query.list(); System.out.println(employees.size());

浙公網安備 33010602011771號