Hibernate查询语言
HQL(Hibernate Query Language)查询语言是完全面向对象的查询语言,它提供了更加面向对象的封装,它可以理解如多态、继承和关联的概念。HQL看上去和SQL语句相似,但它却提供了更加强大的查询功能。
1. 了解HQL语言
HQL语句与SQL语句是相似的,其基本的使用习惯也与SQL相同。由于HQL是面向对象的查询语言,说以它需要从目标对象中查询信息并返回匹配单个实体对象或多个实体对象的集合,而SQL语句是从数据库表中查找指定的信息,返回的是单条信息或多条信息的集合。
注意:HQL语句是区分大小写的,虽然SQL语句并不区分大小写。因为HQL是面向对象的查询语句,它的查询目标是实体对象,也就是java类,java类是区分大小写的,所以HQL也是区分大小写的。
HQL的基本语法如下:
select "对象.属性名"
from "对象"
where "过滤条件"
group by "对象.属性名" having "分组条件"
order by "对象.属性名"
例1.1 在实际应用中的HQL语句。
select * from Employee emp where emp.flag="1"
该语句等价于:
from Employee emp where emp.flag="1"
其中Employee为实体对象。Hibernate在3.0版本以后可以使用HQL执行update和delete的操作,但是并不推荐使用这种方式。
2. 实体对象查询
在HQL语句中,可以通过from字句对实体对象进行直接查询。
例2.1 通过from字句查询实体。
from Person
在大多数情况下,最好为查询的实体对象指定一个别名,方便在查询语句的其它地方引用实体对象。别名的命名方法如下:
from Person per
技巧:别名的首字母最好小写,这是HQL语句的规范写法,与Java中变量的命名规则是一致的,避免与语句中的实体对象混淆。
上面的HQL语句将查询数据库中实体对象Person所对应的所有数据,并以封装好的Person对象的集合形式返回。
例2.2 通过from字句查询指定字段数据。
select Person(id,name) from Person per
这种查询方式,通过new关键字对实体对象动态实例化,将指定的实体对象属性进行重新封装,既不失去数据的封装性,又可提高查询的效率。
注意:在上面的语句中最好不要使用下面的语句进行查询,例如:
select per.id,per.name from Person per
因为此语句返回的并不是原有的对象实体状态,而是一个Object类型的数组,它破坏了数据原有的封装性。
更详细的内容参见下面的链接:
Hibernate 的HQL,QBC 查询语言
Hibernate查询语言HQL 八大要点
Hibernate查询语言的更多相关文章
- Hibernate学习-Hibernate查询语言HQL
HQL(Hibernate Query Language)Hibernate查询语言,语法类似于SQL,可以直接使用实体类及属性. 使用HQL 可以避免使用JDBC 查询的一些弊端 不需要再编写繁复的 ...
- HQL: Hibernate查询语言
HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可 ...
- Hibernate查询语言(HQL)
Hibernate查询语言(HQL)与SQL(结构化查询语言)相同,但不依赖于数据库表. 我们在HQL中使用类名,而不是表名. 所以是数据库独立的查询语言. HQL的优点 HQL有很多优点. 它们如下 ...
- 类型:。net;问题:HQL;结果:HQL: Hibernate查询语言
HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可 ...
- Hibernate 查询语言
查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...
- Hibernate查询语言——HQL
HQL(Hibernate Query Language)查询语言是完全面向对象的查询语言,它提供了更加面向对象的封装,可以理解如多态.继承和关联. HQL的基本语法如下: select " ...
- Java进阶知识13 Hibernate查询语言(HQL),本文以hibernate注解版为例讲解
1.简单概述 1.1. 1) SQL:面向的是数据库 select * from tableName;2) HQL查询(Hibernate Query language): hibernate 提供的 ...
- 027 hibernate查询语言(HQL)
概述:数据查询与检索是Hibernate中的一个亮点,相对其他ORM实现而言,Hibernate提供了灵活多样的查询机制. 标准化对象查询(Criteria Query):以对象的方式进行查询,将查询 ...
- Hibernate批量处理数据
01.批量插入数据 步骤一.创建实体类,Dept和Emp /** * 员工类 * @author Administrator * */ public class Emp { private Integ ...
随机推荐
- Java学习(final、static关键词)
final关键词 概念:final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 特点: 1.final修饰的类不可以被继承,但可以继承别的类 ...
- linq to sql: 在Entityfamework Core中使用多个DbContext
最近在学习DotNetCore并做一个自己的小项目,分为了多个数据库,AccountDbContext和BlogDbContext, 发blog的时候需要用到Account的信息,但是再Blog中只记 ...
- 洛谷P3273 [SCOI2011] 棘手的操作 [左偏树]
题目传送门 棘手的操作 题目描述 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 ...
- Centos7 安装单节点Torque PBS
Operation system: CentOS 7.3 Torque PBS: torque-6.1.1.1.tar hostname: rfmlab user name: cfd01 1. Ins ...
- Hibernate 双向一对多的关联映射
双向的一对多的关联关系是单项的一对多和单项的多对一的情况下产生的. 1.设计表结构 虽然关联关系变为双向的一对多,但是我们表结构不会发生改变,只是指向变了. 2.创建student对象 3.创建Gra ...
- [BZOJ4032][HEOI2015]最短不公共子串(Trie+DP)
在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之——被它们虐. 操作一:对A,B分别建SAM,暴力BFS. 操作二:对B建序列自动机或SAM,A在上面暴力匹配. 操作三:对A,B建 ...
- 使用百度ai接口加图灵机器人完成简单web版语音对话
app文件 from flask import Flask, request, render_template, jsonify, send_file from uuid import uuid4 i ...
- 某DP题目5
题意 一个游戏里有k种装备,一开始等级为1,每打败一个怪兽,会随机掉落一件一种类型的装备,它的等级为[1,t+1]中的随机一个数,t为当前佩戴的类型的装备的等级,若掉落t+1等级的装备,就会佩戴该装备 ...
- python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
python3.5安装报错 python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open sha ...
- java_es
在查询时过滤掉指定的"_id"的数据 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();// 对 ...