Hibernate中支持三种查询方式:HQL(Hibernate Query Language),原生sql查询,Criteria查询。HQL是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象、属性的概念;原生sql查询就是我们程序员手动的写sql语句并执行;Criteria查询又称为对象查询,采用真正的面向对象的方式进行查询,Criteria查询将在后续篇章中进行单独讲解,本篇文章只讲解HQL查询和原生sql查询。
环境:
本篇及后续文章都将使用Oracle数据库、Oracle自带的两张数据表Dept和Emp以及Hibernate4为例进行讲述
一、HQL查询
1.HQL语句的组成
①from子句
最为简单的查询语句,比如:
from Dept
②select子句
主要用于选取对象的属性(投影),如:
select deptNo from Dept
详细将在后续讲解
③where子句
用于添加查询条件,如:
from Dept where deptNo=2
④表达式
一般用在where子句中,如:
from Dept where lower(deptName)='sales'
⑤order by 子句
用于按照指定属性进行排序,如:
from Emp order by hireDate asc
注意:
a.from后面跟的都不是表的名字,而是表对应的实体类的名字,必须完全一致;相应的,语句中的deptName、deptNo等都是 实体类属性的名字,而不是表中列的名字
b.可以为实体类起别名,如:from Dept d where d.deptNo=2
c.select、from、where...等关键词不区分大小写,实体类和属性名要完全一致
2.执行HQL语句
介绍了如何编写HQL语句,下面来介绍下如何来执行。HQL的查询是通过Hibernate的Query接口来实现的
//准备HQL语句
String hql="from Dept";
//使用createQuery()方法来创建Query接口实现类
Query q