没有合适的资源?快使用搜索试试~ 我知道了~
hibernate的几种查询方式总结,hql,Criteria等
资源推荐
资源详情
资源评论
Hibernate 查询总结
查询的 种方法。分别是 HQL 查询,对象化查询 Criteria 方
法,动态查询 DetachedCriteria,例子查询(QBE),sql 查询,命名查
询(NamedQuery)。
下面介绍常用的查询方法
1 HQL 查询
Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构 上的相
似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概
念。
1.1.大小写敏感性问题
除了 Java 类与属性的名称外,查询语句对大小写并不敏感。 所以 与 以及
是相同的,但是 并不等价于 并且 也不等价
于 。
总之,对 java 对象和对象的属性大小写敏感
1.2.from 子句
Hibernate 中最简单的查询语句的形式如下:
该子句简单的返回 类的所有实例。 通常我们不需要使用类的全限定名, 因为 (自动
引入) 是缺省的情况。 所以我们几乎只使用如下的简单写法:
大多数情况下, 你需要指定一个
别名
, 原因是你可能需要 在查询语句的其它部分引用到
这个语句把别名 指定给类 的实例, 这样我们就可以在随后的查询中使用此别名了。 关键字 是
可选的,我们也可以这样写:
子句中可以同时出现多个类, 其查询结果是产生一个笛卡儿积或产生跨表的连接。
!
!
查询语句中别名的开头部分小写被认为是实践中的好习惯, 这样做与 Java 变量的命名标准保持了一致 (比
如,")。
1.3.关联(Association)与连接(Join)
我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名, 这时要使用关键字 #。
#
#$$
#$$
#
受支持的连接类型是从 ANSI SQL 中借鉴来的。
#(内连接)
#(左外连接)
#(右外连接)
# (全连接,并不常用)
语句 #, # 以及 # 可以简写。
#
#$$
还有,一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的
初始化而被初始化,这种方法在使用到集合 的情况下尤其有用,对于关联和集合来说,它有效的代替了
映射文件中的外联接 与延迟声明(lazy declaraons).
#
#$
一个 fetch 连接通常不需要被指定别名, 因为相关联的对象不应当被用在 % 子句 (或其它任何子句)中。
同时,相关联的对象 并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。
注意 构造变量在使用了 &' 或 &'函数 的查询中是不能使用的。最后注意,使用
# 与 # 是没有意义的。
如果你使用属性级别的延迟获取(lazy fetching)(这是通过重新编写字节码实现的),可以使用
来强制 Hibernate 立即取得那些原本需要延迟加载的属性(在第一个查询中)。
(")
("%%&"'$*++*
1.4.select 子句
子句选择将哪些对象与属性返 回到查询结果集中. 考虑如下情况:
#
该语句将选择 s of other s。(其他猫的配偶) 实际上, 你可以更简洁的用以下的查询语句表达相
同的含义:
查询语句可以返回值为任何类型的属性,包括返回类型为某种组件(Component)的属性:
(
%$*+*
,-
查询语句可以返回多个对象和(或)属性,存放在 #./队列中,
0
(
#
#$0
或存放在一个 对象中,
%& 0 '
(
#
#$0
也可能直接返回一个实际的类型安全的 Java 对象,
%)& 0'
(
#
#$0
假设类 ) 有一个合适的构造函数.
你可以使用关键字 给“被选择了的表达式”指派别名:
1&")2'1 &")2' &3'
这种做法在与子句 % 一起使用时最有用:
%&1&")2'1 &")2' &3''
该查询返回了一个 4 的对象,内容是别名与被选择的值组成的名-值映射。
1.5.聚集函数
HQL 查询甚至可以返回作用于属性之上的聚集函数的计算结果:
5&%' &%' 1&%' &'
受支持的聚集函数如下:
5&' &' &' 1&'
&3'
&' &"' &'
你可以在选择子句中使用数学操作符、连接以及经过验证的 SQL 函数:
%6&$%'
#$$
)" %
,-77**7777**77&-'!
关键字 " 与 也可以使用,它们具有与 SQL 相同的语义.
"
&"' &'
1.6.%多态查询
一个如下的查询语句:
不仅返回 类的实例, 也同时返回子类 ( 的实例. Hibernate 可以在 子句中指定
任何
Java 类或接口. 查询会返回继承了该类的所有持久化子类 的实例或返回声明了该接口的所有持久化类的实
例。下面的查询语句返回所有的被持久化的对象:
#5#
接口 -" 可能被各种各样的持久化类声明:
-" -"%8
剩余15页未读,继续阅读
资源评论
wysxwdm
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功