Hibernate查询语言HQL

Hibernate查询语言HQL

ID:40231691

大小:480.00 KB

页数:19页

时间:2019-07-27

Hibernate查询语言HQL_第1页
Hibernate查询语言HQL_第2页
Hibernate查询语言HQL_第3页
Hibernate查询语言HQL_第4页
Hibernate查询语言HQL_第5页
资源描述:

《Hibernate查询语言HQL》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hibernate查询语言HQL在本讲您能了解如下知识点在Hibernate中检索对象根据标识符检索对象使用HQL检索对象Hibernate查询语言HQL1、在Hibernate中检索对象的各种方法(1)查询与检索数据的方法Hibernate提供下列方式从数据库中提取对象,数据查询与检索是Hibernate中的一个亮点。相对其他ORM实现而言,Hibernate提供了灵活多样的查询机制。其中包括下面的各种方式。(2)导航对象图当对象产生了各种关联关系以后,我们从一个已经装载的对象开始,通过像aUser.getAddress().getCity()的属性访问器方法访问

2、相关的对象。如果Session是打开的,当我们进行对象导航时,Hibernate会自动装载目标关联的对象。(3)通过标识符检索当对象的唯一标识符值是已知的时候,通过标识符检索是最方便最有性能的方法。(4)使用Hibernate查询语言(HQL)它是完全面向对象的查询语言。(5)使用Hibernate条件API它提供了类型安全的面向对象的方式执行查询而不需要编写HQL字符串。这种便利性包括基于例子(example)对象的查询。(6)使用本地SQL查询这种查询Hibernate只关心把JDBC结果集映射到持久对象图。2、根据标识符检索对象(1)使用session.get

3、()方法下面的代码片断从数据库中检索User对象:Useruser=(User)session.get(User.class,userID);get()方法很特别,因为标识符唯一地标识类的单个实例。因此,应用程序通常使用标识符方便地处理持久对象。当用标识符检索对象时可以使用缓存,如果对象已经缓存了可以避免数据库碰撞(hit)。(2)使用session.load()方法Hibernate也提供了load()方法:Useruser=(User)session.load(User.class,userID);load()方法是早期版本种提供的,因为用户的请求Hiberna

4、te已经把get()方法加入到HibernateAPI中了。3、使用HQL(1)HQL简介Hibernate查询语言是与其相似的关系型查询语言SQL的面向对象方言。HQL与ODMGOQL和EJB-QL很相像,但是不像OQL,它是用于SQL数据库的,并且比EJB-QL更强大更优秀(然而,EJB-QL3.0将会与HQL非常相似)。只要有SQL基础HQL非常容易学。(2)应用要点HQL不是像SQL这样的数据操纵语言。目前它只能用来检索对象,不能更新、插入或删除数据---因为对象状态的同步是持久管理器的工作,而不是开发者的工作。(3)示例代码准备查询query之后,我们把标

5、识符值绑定到命名参数fname上。User对象的List作为结果返回。(4)主要的功能(5)大小写敏感性问题在查询语句中除了Java类与属性的名称外,查询语句中其它部分对大小写并不敏感。所以SeLeCT与sELEct以及SELECT是相同的,但是org.hibernate.eg.FOO并不等价于org.hibernate.eg.Foo并且foo.barSet也不等价于foo.BARSET。4、from子句(1)功能:在Hibernate中实现数据库表中的数据查询。(3)使用一个别名(5)多态查询----返回所有的被持久化的对象(4)子句中可以同时出现多个类5、sel

6、ect子句(1)功能:select子句选择将对象的属性(也可以返回对象)返回到查询结果集中。(2)应用示例(6)查询语句也可能直接返回一个实际的类型安全的Java对象selectnewFamily(mother,mate,offspr)fromDomesticCatasmotherjoinmother.mateasmateleftjoinmother.kittensasoffspr(7)在查询语句中可以调用SQL统计类的各个函数6、where子句(1)功能:where子句允许你将返回的对象的实例列表的范围缩小。(2)应用示例(3)复合路径表达式使得where子句非常

7、地强大fromCatcatwherecat.mate.nameisnotnull该查询将被翻译成为一个含有表连接(内连接)的SQL查询。(4)=运算符不仅可以被用来比较属性的值,也可以用来比较实例fromCatcat,Catrivalwherecat.mate=rival.mateselectcat,matefromCatcat,Catmatewherecat.mate=mate(7)特殊属性class它在进行多态持久化的情况下被用来存取一个实例的鉴别值(discriminatorvalue)。一个嵌入到where子句中的Java类的名字将被转换为该类的鉴别值-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。