- 概述
Hibernate提供了以下几种检索对象的方式
1)导航对象图检索方式:根据已经加载的对象导航到其他对象;
2)OID检索方式:按照对象的OID来检索对象;
3)HQL检索方式:使用面向对象的HQL查询语言;
4)QBC检索方式:使用QBC(Query By Criteria)API来检索对象。这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口。
5)本地SQL检索的方式:使用本地数据的SQL查询语句。
HQL(Hibernate Query Language)面向对象的查询语言,它和SQL查询语言有些相似。在Hibernate提供的各种检索方式中,HQL是使用最广泛的一种检索方式。它有如下功能:
1)在查询语句中设定各种查询条件
2)支持投影查询,即仅检索出对象的部分属性
3)支持分页查询
4)支持连接查询
5)支持分组查询,允许使用“HAVING”和“GROUP BY”关键字
6)提供内置聚集函数,如:SUM()、MIN()、Max()
7)支持子查询
8)支持动态绑定参数
9)能够调用用户定义的SQL函数或标准的SQL函数。
HQL检索方式包括以下步骤
1)通过Session的createQuery()方法创建一个Query对象,它包括一个HQL查询语句。HQL查询语句中可以包括命名参数
2)动态绑定参数
3)调用Query相关方法执行查询语句
Query接口支持方法链编程风格
它的setXxx()方法返回自身实例,而不是void类型。
HQL vs SQL
1)HQL查询语句是面向对象的,Hibernate负责解析HQL查询语句,然后根据对象-关系映射文件中的映射信息,把HQL查询语句翻译成相应的SQL语句。HQL查询语句中的主题是域模型中的类与类的属性
2)SQL查询语句是与关系数据库绑定在一起的。SQL查询语句中的主体是数据库表及表的字段。
绑定参数
1)Hibernate的参数绑定机制依赖于JDBC API中的PreparedStatement的预定义SQL语句功能。
2)HQL的参数绑定两种形式:
按参数名称绑定:在HQL查询语句定义命名参数,命名参数以“.”开头
按参数位置绑定:在HQL查询语句中用“?”来定定义参数位置
3)相关参数
setEntity():把参数与一个持久类绑定
setParamenter():绑定任意类型的参数,该方式的第三个参数显式指定Hibernate映射类性。
HQL采用ORDER BY关键字对查询结果排序