Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62863
  • 博文数量: 21
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-18 17:58
文章分类

全部博文(21)

文章存档

2011年(1)

2009年(1)

2008年(19)

我的朋友
最近访客

分类: Java

2008-07-23 09:37:10

使用Hibernate有一段时间了,在其间对hibenrate查询的博大精深,深深震撼,可以说,hibernate的查询更符合面向对象的思想。对于初学者来说,可能感觉不是很习惯,毕竟经典的SQL查询方式伴随了我们那么的久,要想一下子适应可能还不适应。我这篇文章就对Hibernate常用的查询功能做下例示性的说明。让我们体验hibernate给我们带来的便利吧。

hibernate的查询分3种类型:

  1. 查询基于HQL(hibernate query )---QBH
  2. 查询基于Criteria ----QBC
  3. 查询基于Example---QBE
  4. 可能在某种特殊的情况下你选择原生的SQL查询

这3重形式覆盖了Hibernate的查询方式分类,他们各有优缺点,适合于不同的场合。比如说QBC更适合于条件查询,而QBH更适合于报表查询,QBE更适合于实例查询。

我们在说的时候,在不同的场合选择不同的查询方式,力求代码简单,易于构建。

对于Hibernate来说,最简单的查询莫过于

String HQL="from com.danan.Entity";

Query q=session.createQuery(HQL);

List result=q.list();

如你所见,就是如此的简单。当然你可以省略包前缀,使它更简洁,但是不要忘记这要保证别的包中不存在同名的持久化实体。

如果我们的Entity作为一个接口或者是其父类,那么你所查询出来的结果result是其子类或者实现其接口的持久化类。如果HQL为"from Object"那么查询的结果会包含所有被持久化声明的类的集合。

在前面我们看到,q引用的是createQuery的实体,那么这就声明了,参数String以HQL解析,如果你想用原生的SQL语句来进行查询,那么你可以引用createSQLQuery进行查询。

  1. 查询以HQL的形式:

HQL(Hibernate Query language),是Hibernate设计的一套完整高效的查询语言,HQL通过面向对象的语句结构实现了和SQL语言类似的功能。

最简单的HQL:

String HQL="from com.danan.Entity";如果是HQL="from com.danan.Entity1,Entity2",则返回他们的笛卡尔积。

 

 

阅读(645) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~