Hibernate 查询HQL,QBC 及命名HQL,SQL查询
1导航对象图检索方式
根据己经加载的对象,导航到其他对象。
如: Dept dept= session.get(Dept.class ,10 ); // 持久Dept
//由于dept关联了emps集合,hibernate就会自动生成SQL语句去检索 Emp的数据
customer.getEmps.size()
2 OID检索方式
按照对象的OID来检索对象。
根据id检索 session提供 get/load 方法
3 HQL检索方式 使用面向对象的HQL查询语言。
采用HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查询语句。
HQL(Hibernate QueryLanguage) 是面向对象的查询语言,它和SQL查询语言有些相似。
在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。它具有如下功能:
- 在查询语句中设定各种查询条件。
- 支持投影查询,即仅检索出对象的部分属性。
- 支持分页查询。
- 支持连接查询。
- 支持分组查询,允许使用having和group by关键宇。
- 提供内置聚集函数,如sum()、min()和max()。
- 能够调用用户定义的SQL函数。
- 支持子查询,即嵌入式查询。
- 支持动态绑定参数。
Session类的find()方法与Query 接口都支持HQL 检索方式。这两者的区别在于,前者只是执行一些简单HQL 查询语句的便捷方法,它不具布动态绑定参数的功能。
使用**HQL**查询员工姓刘的
List<?> customers = session.createQuery(
“from Emp e where e.ename like ‘刘%’”)
.list();
4 QBC检索方式 { 根据面向对象的Criteria对象检索}
使用QBC(QueryBy Criteria)API来检索对象。
Criteria查询采用面向对象方式封装查询条件,又称为对象查询
由Hibernate 自动产生SQL查询语句
QBC API提供了检索对象的另一种方式,它主要由Criteria 接口、Criterion 接口和Expression 类组成。
支持在运行时动态生成查询语句。
使用QBL查询员工姓刘的
List
.add(Restrictions.like(“ename”,”刘%”))
.list();
5 QBE ( Query By Example )检索方式,它是QBC的子功能。
QBE允许先创建一个对象样板,然后检索出所有和这个样板相同的对象。
Emp emp1=new Emp();
template.setName(“翠花”);
List
.add(Example.create(emp1)).list();
6 本地SQL检索方式 { 根据SQL语句检索}
使用本地数据库的SQL查询语句。
// 1)获得会话对象
Session session = HibernateUtil.currentSession();
String sql = “select {e.*} from emp e”;
List
还没有评论,来说两句吧...