`
wenson
  • 浏览: 1041794 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

方便的HQL: Hibernate查询语言

阅读更多
  HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。
  
  15.1. 大小写敏感性问题
  
  除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT 与 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等价于 org.hibernate.eg.Foo 并且 foo.barSet 也不等价于 foo.BARSET。
  
  本手册中的HQL关键字将使用小写字母. 很多用户发现使用完全大写的关键字会使查询语句 的可读性更强, 但我们发现,当把查询语句嵌入到Java语句中的时候使用大写关键字比较难看。
  
  15.2. from子句
  
  Hibernate中最简单的查询语句的形式如下:
  
  代码内容
  from eg.Cat
  
  该子句简单的返回eg.Cat类的所有实例。 通常我们不需要使用类的全限定名, 因为 auto-import(自动引入) 是缺省的情况。 所以我们几乎只使用如下的简单写法:
  
  代码内容
  from Cat
  
  大多数情况下, 你需要指定一个别名, 原因是你可能需要 在查询语句的其它部分引用到Cat
  
  代码内容
  from Cat as cat
  
  这个语句把别名cat指定给类Cat 的实例, 这样我们就可以在随后的查询中使用此别名了。 关键字as 是可选的,我们也可以这样写:
  
  代码内容
  from Cat cat
  
  子句中可以同时出现多个类, 其查询结果是产生一个笛卡儿积或产生跨表的连接。
  from Formula, Parameter
  from Formula as form, Parameter as param
  
  查询语句中别名的开头部分小写被认为是实践中的好习惯, 这样做与Java变量的命名标准保持了一致 (比如,domesticCat)。
  
  15.3. 关联(Association)与连接(Join)
  
  我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名, 这时要使用关键字join。
  
  代码内容
  from Cat as cat
  inner join cat.mate as mate
  left outer join cat.kittens as kitten
  from Cat as cat left join cat.mate.kittens as kittens
  from Formula form full join form.parameter param
  
  受支持的连接类型是从ANSI SQL中借鉴来的。
  inner join(内连接)
  left outer join(左外连接)
  right outer join(右外连接)
  full join (全连接,并不常用)
  
  语句inner join, left outer join 以及 right outer join 可以简写。
  
  代码内容
  from Cat as cat
  join cat.mate as mate
  left join cat.kittens as kitten
  
  还有,一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接 与延迟声明(lazy declarations). 查看 第 20.1 节 “ 抓取策略(Fetching strategies) ” 以获得等多的信息。
  
  代码内容
  from Cat as cat
  inner join fetch cat.mate
  left join fetch cat.kittens
  
  一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在 where 子句 (或其它任何子句)中。同时,相关联的对象 并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。
  
  注意fetch构造变量在使用了scroll() 或 iterate()函数 的查询中是不能使用的。最后注意,使用full join fetch 与 right join fetch是没有意义的。
  
  如果你使用属性级别的延迟获取(lazy fetching)(这是通过重新编写字节码实现的),可以使用 fetch all properties 来强制Hibernate立即取得那些原本需要延迟加载的属性(在第一个查询中)。
  
  代码内容
  from Document fetch all properties order by name
  from Document doc fetch all properties where lower(doc.name) like ’%cats%’
分享到:
评论

相关推荐

    HQL:Hibernate Qusery Language

    HQL :是面向对象的查询语言,同SQL有些相似是Hib中最常用的方式。 查询设定各种查询条件。 支持投影查询,检索出对象的部分属性。 支持分页查询,允许使用having和group by 提供内制的聚集函数,sum(),min(),max...

    HQL Hibernate查询语言

    HQL Hibernate查询语言,HQL的学习和参考的文档,开发必备。

    Hibernate查询语言HQL.PPT

    Hibernate查询语言HQL.PPT

    Hibernate查询语言HQL

    Hibernate查询语言HQL

    hibernate查询语言--HQL

    hibernate 查询语言 HQL的使用详解及实例, 个人笔记,适合初学者

    Hibernate框架参考文档

    14. HQL: Hibernate查询语言; 15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:...

    Hibernate查询语言(HQL) 语法参考

    HQL中文语法参考, 详细描述hibernate 查询语言的各种语法,是不可多得的HQL中文参考资料!

    Hibernate查询语言(HQL)

    Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。

    Hibernate 查询语言

    HQL:Hibernate Qusery Language,如果你已经熟悉它,就会发现它跟SQL非常相像。不过 你不要被表面的假象迷惑,HQL是面向对象的(OO,用生命的眼光看待每一个对象,他们是如此 鲜活)。如果你对JAVA和SQL语句有一定...

    hibernate查询语言hql

    NULL 博文链接:https://iblike.iteye.com/blog/795755

    Hibernate 3.6.0.Final Reference PDF 手册

    第 16 章 HQL: Hibernate 查询语言 第 17 章 条件查询(Criteria Queries) 第 18 章 Native SQL 查询 第 19 章 过滤数据 第 20 章 XML 映射 第 21 章 提升性能 第 22 章 工具箱指南 第 23 ...

    Hibernate之HQL查询

    HQL查询是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,HQL 是应用较为广泛的方式.这是本人对HQL知识点做的一个总结性的练习

    Hibernate HQL查询.docx

    Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。

    HQL语法大全,并带有详细的例子

    HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按 如下步骤进行: (1)获取Hibernate Session对象; (2)编写HQL语句; (3)以HQL...

    hibernate hql 大全

    此书对Hibernate的查询语言hql进行详细的介绍,用来做工具书还是很不错的。

    Hibernate学习笔记

    Hibernate 学习笔记 get和load的区别 一对一,一对多,多对多 悲观锁,乐观锁 hibernate查询语言hql hibernate一级缓存、二级缓存 抓取策略

    HQL查询语言的使用介绍

    HQL是Hibernate Query Language的缩写,语法很想SQL,但是HQL是一种面向对象的查询语言。SQL的操作对象是数据列、表等数据库对象,而HQL操作的是类、实例、属性

    hibernate中文教材

    Hibernate提供了它特有的数据库查询语言HQL,这种查询语言屏蔽了不同数据库之间的差别,使你可以编写统一的查询语句执行查询。不同于其他持久化解决方案的是Hibernate并没有把SQL的强大功能屏蔽掉,而是仍然兼容SQL...

Global site tag (gtag.js) - Google Analytics