Hibernate(十二):HQL查询(一)

  • 概述

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关键字对查询结果排序

时间: 2024-12-15 04:34:27

Hibernate(十二):HQL查询(一)的相关文章

Hibernate(十二)Criteria查询

一.简述 Criteria是一种比hql更面向对象的查询方式.Criteria 可使用 Criterion 和 Projection 设置查询条件.可以设置 FetchMode(联合查询抓取的模式 ) ,设置排序方式,Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode (数据库锁模式). Criteria本身只是查询的容器.Criteria查询又称对象查询 Criteria查询采用面向对象的方式封装查询条件.由Hibernater自动生成SQ

【Hibernate步步为营】--hql查询之实体对象查询

上篇文章简单介绍了hql它作为Hibernate的查询语言,封装了基本上SQL的所有查询操作,HQL能够实现对数据库文件的增删改查,该篇文章着重讨论HQL实体对象的查询方法. 一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.1

【Hibernate步步为营】--hql查询小介

HQL 是指Hibernate Query Language,它是Hibernate的查询语言,拥有一套自己的查询机制,它的查询语句和SQL非常类似.在使用的时候可以非常快上手.HQL提供了基本上SQL全部的查询功能,可是在使用HQL查询时有非常多地方须要注意.该篇文章整理了HQL查询过程中须要注意的一些主要的语法问题,在使用HQL查询时希望避免这些问题. 一.Hibernate简单介绍 HQL採用的是标准化对象查询.它是以对象的方式进行查询.将查询语句封装为对象操作.长处:可读性好.复合jav

Hibernate笔记——11.HQL查询

HQL是Hibernate的面向对象的查询语句.使用HQL,首先要得到session对象,然后编写HQL,以HQL语句为参数调用session的createQuery方法创建查询对象.如果HQL包含参数,则调用Query的set方法为参数赋值.调用Query对象的list或者uniqueResult方法返回查询结果列表(持久化实体集).

Hibernate框架之HQL查询与Criteria 查询的区别

Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: /* * 查询所有房屋 * * (non-Javadoc) * @see Dao.HouseDao#selecthouse() */ public List<House> selecthouse() { // TODO Auto-generated method stub //获取连接 Sess

Hibernate用到HQL查询时的错误

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: student is not mapped [from student] 研究了一下发现,原来是HQL查询是基于持久化类查询,而不是基于数据库,我的数据库表是student,而类是Student,所以就出错了,正确应该是from Student

Hibernate(十二)Session缓存与二级缓存

一级缓存主要作用是管理对象. 应用程序级别的缓存(SessionFactory级别的缓存),也叫二级缓存,默认是不开启的. 不管是一级缓存还是二级缓存,都需要根据OID获取对象才有效. package test.hibernate.hbmSecondCache; import java.util.HashSet; import java.util.Set; public class Department { private Integer id; private String name; pri

Java_Web三大框架之Hibernate+jsp+selvect+HQL查询数据

俗话说:"好记性不如烂笔头".本人学习Hibernate也有一个星期了,对Hibernate也有一个初步的了解.下面对Hibernate显示数据做个笔记,使用租房系统的Hibernate+jsp+selvect. 第一步:编写房屋实体类 /* * 房屋实体类 */ public class House { private int id;//房屋id private String title;//标题 private String description;//描述 private Str

Hibernate中的HQL查询与缓存机制

HQL:完全面向对象查询 SQL的执行顺序: 1.From 2.Where 过滤基础数据 where与having的区别:1.顺序不同 2.where过滤基础数据 3. 过滤聚合函数 3.Group by 4.Select 5.Having 6.Order by   使用Hibernate查询时,使用hibernate的一个接口query Hql是面向对象的查询语句,所以跟的是类名 Query query = session.createQuery("select id,name,stu.cla

Hibernate学习之hql查询语句

*  页面上数据的字段和数据库中字段差不多,这个时候,采用迫切连接  结构比较好,如果页面上的字段很少,要按照需求加载数据,采用带构造函数的select查询 实例讲解:转自:http://www.cnblogs.com/xiaoluo501395377/p/3376256.html 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Classroom与Student是一对多的关系,这里仅仅贴出这三个bean的属性代码: