HQL(Hibernate Query Language) 是面向对象的查询语言,它和 SQL 查询语言有些相似。在 Hibernate 提供的各种检索方式中,HQL 是使用最广的一种检索方式,它有如下功能:

  -在查询语句中设定各种查询条件

  -支持投影查询,即检索出对象的部分属性

  -支持分页查询

  -支持连接查询

  -支持分组查询,允许使用 HAVING 和 GROUP BY 关键字

  -提供内置聚集函数,如 sum()、min()、max()

  -支持子查询

  -支持动态绑定参数

  -能够调用用户定义的 SQL 函数或标准的 SQL 函数

HQL 检索方式包括以下步骤:

  -通过 Session 的 createQuery()方法创建一个 Query 对象,它包括一个 HQL 查询语句。HQL 查询语句中可以包含命名参数

  -动态绑定参数

  -调用 Query 相关方法执行查询语句

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. 创建 Query 对象
String hql = "FROM Employee e WHERE e.id < ?";
Query query = session.createQuery(hql); // 2. 绑定参数
query.setInteger(0, 130); // 3. 执行查询
List<Employee> employees = query.list();
System.out.println(employees.size());

Hibernate 检索方式之 HQL 检索方式的更多相关文章

  1. hibernate检索方式(HQL 检索方式,QBC 检索方式,本地 SQL 检索方式)

    hibernate有五种检索方式,这儿用 单向的一对多的映射关系 例子,这儿有后三种的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 ...

  2. [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)

    1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...

  4. Hibernate的检索方式--查询数据的方式

    Hibernate 提供了以下几种检索对象的方式1导航对象图检索方式: 根据已经加载的对象导航到其他对象(根据已经加载的对象,导航到其他对象-例如一对多的查询)2OID 检索方式: 按照对象的 OID ...

  5. Hibernate之HQL检索(查询)方式

    HQL(Hibernate Query Language)是面向对象的查询语言,与SQL非常相似.在Hibernate中,HQL是使用最广泛的检索方式. 具有下面经常使用功能: (1)在查询语句中,能 ...

  6. hibernate提供的5种检索数据方式

    一.五种检索数据方式 1.OID检索,即使用session.get或session.load通过类及指定id查询数据,如Customer c=(Customer)session.get("C ...

  7. [Hibernate] One-To-Many 配置文件和注解的方式以及HQL语句

    一对多需要在一的类配置多的类的set泛型集合. 多的一端需要添加一的类作为属性,其和数据库对应的是对应表的主键. 一个购物车有多个商品,购物车有个cart_id作为主键,商品除了自己的items_id ...

  8. [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Hibernate 查询方式、JPA查询方式

    hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...

随机推荐

  1. luogu P5304 [GXOI/GZOI2019]旅行者

    传送门 所以这个\(5s\)是SMG 暴力是枚举每一个点跑最短路,然后有一个很拿衣服幼稚的想法,就是把所有给出的关键点当出发点,都丢到队列里,求最短路的时候如果当前点\(x\)某个相邻的点\(y\)是 ...

  2. C# 动态调用 webservice 的类

    封装这个类是为之后使用 webservice 不用添加各种引用了. using System; using System.Collections.Generic; using System.Compo ...

  3. python2x如何迁移代码到python3中

    2to3 - 自动Python 2到3代码转换 2to3是一个Python程序,它读取Python 2.x源代码并应用一系列修复程序将其转换为有效的Python 3.x代码.标准库包含一组丰富的修复程 ...

  4. Tomcat关闭失败,SEVERE: Could not contact localhost:8005. Tomcat may not be running.

    SEVERE: Could not contact localhost:8005. Tomcat may not be running. Tomcat 启动后,关闭失败,显示以下 进入 java 的安 ...

  5. 关于操作HDFS的一个问题

    近日写程序定时任务调Hadoop MR程序,然后生成报表,发送邮件,当时起了两个任务A和B,调MR程序之前,会操作hdfs(读写都有),任务A每天一点跑,任务B每十分钟跑一次,B任务不会调用MR程序, ...

  6. php json数据 入库时 转义字符丢失

    转义字符入库后消失,导致出库后无法反转义 解决办法  增加 addslashes函数 if (empty($result)) { $data['activitiesid'] = $param['act ...

  7. 增加swap分区

    起因:开发人员说tomcat关闭了,然后我排查了下,发现内存耗尽,然后临时用swap分区,以供当前运行的程序使用. 先用free -h查看一下swap的大小 1.添加swap分区 使用dd命令创建/h ...

  8. js数据结构与算法——字典与散列表

    <script> //创建字典 function Dictionary(){ var items = {}; this.set = function(key,value){ //向字典添加 ...

  9. JavaScript代码规范

    变量名:驼峰命名法(首单词小写,后面每个单词首字母大写) firstName = "John"; lastName = "Doe"; price = 19.90 ...

  10. Jace 上新建 Station 配置 笔记

    1.Station站点的结构图 2.niagara 结构框架图 Niagara 系统的架构是围绕着“以组件(Component)为导向的编程”为核心设计的.组件(Component)是使用Java 编 ...