Hibernate HQL查询简介[Java编程]
本文“Hibernate HQL查询简介[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
传统的SQL语言采取的是构造化的查询办法,而这种办法关于查询以对象情势存在的数据却无能为力.幸运的是,Hibernate为我们供应了一种语法近似于SQL的语言,Hibernate查询语言(HQL),和SQL差别的是,HQL是一种面向对象的查询语言,它可以查询以对象情势存在的数据.因此,本文就HQL若何工作以及若何利用HQL展开了深化的谈论.
SQL本身是非常强盛的.当SQL的这种强盛和处理面向对象数据的本领相结合时,就产生了HQL.和SQL一样,HQL供应了丰富的查询功效,如投影查询、聚合函数、分组和约束.任何复杂的SQL都可以映射成HQL.
本文的第一部份将谈论HQL的简单用法.第二部份将谈论在HQL中若何按照上下文关系举行查询.在第三部份将以一个例子来阐明如安在实际利用中利用HQL.
进入HQL世界
一个ORM框架是成立在面向对象的底子上的.最好的例子是Hibernate若何供应类SQL查询.固然HQL的语法近似于SQL,但实际上它的查询目标是对象.HQL拥有面向对象语言的全部的特点,这此中包含多态、担当和组合.这就相当于一个面向对象的SQL,为了供应更强盛的功效,HQL还供应了很多的查询函数.这些函数可以被分为四类:
1.投影函数
2.约束函数
3.聚合函数
4.分组函数
利用HQL可以成立简单的查询,也可以成立更复杂的查询.在本文中并不谈论那些非常复杂的查询,如含有子查询和很多衔接的查询.本文只谈论衔接两个表的查询.目前让我们开始接近HQL吧!
投影
如谓投影,就是一个可以拜候的对象或对象的属性.在HQL中,可以利用from和select子句来完成这个工作.
from子句返回指定的类的全部实例.如from Order将返回Order类的全部实例.换句话说,以上的查询相当于以下的SQL语句:
select * from order
from 是最简单的查询子句.from背面可以跟一个或多个类名(类名也可以带有别名).为了得到Order和Product的全部实例,可以利用以下的查询:
from Order, Product
和类名一样,别名也可以在from后利用,以下代码如示:
from Order as o, Product p
当查询很复杂时,加入别名可以削减语句的长度.我们可以看看以下的SQL语句:
select o.*, p.* from order o, product p where o.order_id = p.order_id
我们可以很简单看出,上面的查询是一对多的关系.在HQL中相当于一个类中包含多个别的类的实例.因此,以上的SQL写成HQL就是:
from Order as o inner join o.products as product
目前让我们考虑别的一个从表中得到指定属性的情形.这就是最常用的select子句.这在HQL中的工作方法和SQL中一样.而在HQL中,假如只是想得到类的属性的话,select语句是最后的挑选.以上的SQL可以利用select子句改成以下的HQL语句:
select product from Order as o inner join o.products as product
以上的HQL语句将返回Order中的全部Products实例.假如要得到对象的某一个属性,可以将HQL语句写成以下的情势:
select product.name from Order as o inner join o.products as product
假如要得到多个对象的属性,可以将HQL语句写成以下情势:
select o.id, product.name from Order as o inner join o.products as product
接下来,我们将进入下一个议题.假定我们需求按照某些条件得到数据.那么以上所述的HQL语句将无法满意需求.为了到达这一目的,我们就要用到下面将要谈论的约束子句.
以上是“Hibernate HQL查询简介[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |