




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate检索对象的方式 教学内容HQL检索方式QBC检索方式本地SQL检索方式 Hibernate提供的检索对象的方式 导航对象图检索方式根据已经加载的对象 导航到其他对象 例如 对于已经加载的Customer对象 调用它的getOrders iterator 方法就可以导航到所有关联的Order对象 假如在关联级别使用了延迟加载检索策略 那么首次执行此方法时 Hibernate会从数据库中加载关联的Order对象 否则就从缓存中取得Order对象 OID检索方式按照对象的OID来检索对象 Session的get 和load 方法提供了这种功能 如果在应用程序中事先知道了OID 就可以使用这种检索对象的方式 HQL检索方式使用面向对象的HQL查询语言 Session的find 方法用于执行HQL查询语句 此外 Hibernate还提供了Query接口 它是Hibernate提供的专门的HQL查询接口 能够执行各种复杂的HQL查询语句 本章有时把HQL检索方式简称为HQL QBC检索方式使用QBC QueryByCriteria API来检索对象 这种API封装了基于字符串形式的查询语句 提供了更加面向对象的接口 本章有时把QBC检索方式简称为QBC 本地SQL检索方式使用本地数据库的SQL查询语句 Hibernate会负责把检索到的JDBCResultSet结果集映射为持久化对象图 HQL检索方式 HQL HibernateQueryLanguage 是面向对象的查询语言 它和SQL查询语言有些相似 在Hibernate提供的各种检索方式中 HQL是使用最广的一种检索方式 它具有以下功能 在查询语句中设定各种查询条件支持投影查询 即仅检索出对象的部分属性支持分页查询支持连接查询支持分组查询 允许使用having和groupby关键字提供内置聚集函数 如sum min 和max 能够调用用户定义的SQL函数支持子查询 即嵌入式查询支持动态绑定参数 Session的find 方法以及Query接口 Session类的find 方法以及Query接口都支持HQL检索方式 这两者的区别在于 前者只是执行一些简单HQL查询语句的便捷方法 它不具有动态绑定参数的功能 而且在Hibernate3 x版本中 已经淘汰了find 方法 而Query接口才是真正的HQL查询接口 它提供了以上列出的各种查询功能 HQL检索步骤 创建一个Query对象Queryquery session createQuery fromCustomerascwhere c name customerName andc age customerAge 动态绑定参数query setString customerName Tom query setInteger customerAge 21 执行查询语句 返回查询结果Listresult query list HQL检索步骤 1 通过Session的createQuery 方法创建一个Query对象 它包含一个HQL查询语句 HQL查询语句可以包含命名参数 如 customerName 和 customerAge 都是命名参数 2 动态绑定参数 Query接口提供了给各种类型的命名参数赋值的方法 例如setString 方法用于为字符串类型的customerName命名参数赋值 3 调用Query的list 方法执行查询语句 该方法返回List类型的查询结果 在List集合中存放了符合查询条件的持久化对象 方法链编程风格 Listresult session createQuery setString customerName Tom setInteger customerAge 21 list 方法链编程风格能使程序代码更加简洁 QBC检索方式 采用HQL检索方式时 在应用程序中需要定义基于字符串形式的HQL查询语句 QBCAPI提供了检索对象的另一种方式 它主要由Criteria接口 Criterion接口和Expression类组成 它支持在运行时动态生成查询语句 QBC检索方式 创建一个Criteria对象Criteriacriteria session createCriteria Customer class 设定查询条件 然后把查询条件加入到Criteria中Criterioncriterion1 Expression like name T Criterioncriterion2 Expression eq age newInteger 21 criteria criteria add criterion1 criteria criteria add criterion2 执行查询语句 返回查询结果Listresult criteria list QBC检索步骤 1 调用Session的createCriteria 方法创建一个Criteria对象 2 设定查询条件 Expression类提供了一系列用于设定查询条件的静态方法 这些静态方法都返回Criterion实例 每个Criterion实例代表一个查询条件 Criteria的add 方法用于加入查询条件 3 调用Criteria的list 方法执行查询语句 该方法返回List类型的查询结果 在List集合中存放了符合查询条件的持久化对象 对于以上程序代码 当运行Criteria的list 方法时 Hibernate执行的SQL查询语句为 select fromCUSTOMERSwhereNAMElike T andAGE 21 方法链编程风格 Listresult session createCriteria Customer class add Expression like name T add Expression eq age newInteger 21 list SQL检索方式 采用HQL或QBC检索方式时 Hibernate会生成标准的SQL查询语句 适用于所有的数据库平台 因此这两种检索方式都是跨平台的 有的应用程序可能需要根据底层数据库的SQL方言 来生成一些特殊的查询语句 在这种情况下 可以利用Hibernate提供的SQL检索方式 创建Query对象Stringsql select c fromCOURSEScwherec NAME name 注意 1 3以后只能这么用了SQLQueryquery session createSQLQuery sql query addEntity c Course class query setString name shuxue Listlist query list 分页查询 Query和Criteria接口都提供了用于分页显示查询结果的方法 setFirstResult intfirstResult 设定从哪一个对象开始检索 参数firstResult表示这个对象在查询结果中的索引位置 索引位置的起始值为0 默认情况下 Query和Criteria接口从查询结果中的第一个对象 也就是索引位置为0的对象开始检索 setMaxResult intmaxResults 设定一次最多检索出的对象数目 默认情况下 Query和Criteria接口检索出查询结果中所有的对象 分页查询 采用HQL检索方式Queryquery session createQuery fromCustomercorderbyc nameasc query setFirstResult 0 query setMaxResults 10 Listresult query list 采用QBC检索方式Criteriacriteria session createCriteria Customer class criteria addOrder Order asc name criteria setFirstResult 0 criteria setMaxResults 10 Listresult criteria list 迫切左外连接 以下两种检索方式是等价的 它们都能同时迫切左外连接类B和类C HQL迫切左外连接检索方式fromAaleftjoinfetcha bbleftjoinfetcha ccwherebisnotnullandcisnotnull QBC迫切左外连接检索方式Listresult session createCriteria A class setFetchMode this b FetchMode EAGER setFetchMode this c FetchMode EAGER add Expression isNotNull this b add Expression isNotNull this c list 投影查询 select关键字用于选择对象的部分属性 例如 Iteratorit session createQuery selectc id c name o orderNumber fromCustomercjoinc orderso whereo orderNumberlike T list iterator while it hasNext Object row Object it next Longid Long row 0 Stringname String row 1 StringorderNumber String row 2 System out println id name orderNumber 投影查询 HQL查询语句对应的SQL语句为 selectc ID c NAME o ORDER NUMBERfromCU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疼痛课件开场白介绍
- 道路安全英语课件
- 2025年私人房屋租赁合同样本
- 道德为主题的班会课件
- 浙江省绍兴市皋埠镇中学2026届中考二模物理试题含解析
- 2025年个人汽车购买合同模板范文
- 2025年《税务师》考试题库及参考答案(巩固)
- 培训机构个人年终总结
- 急性呼吸窘迫综合征-(精)讲课文档
- 2025年新园林赔偿协议书
- 仪器仪表制造工(高级)考试题库及答案
- 横纹肌溶解症的护理
- 2023年度湖北省政府采购评审专家资格高分通关题型题库附解析答案
- 老旧小区PE管道改造方案
- 2024北京西城初二(上)期末语文试卷及答案
- 《城市轨道交通不间断电源(UPS)整合设计规范》
- 2025高考数学专项复习:马尔科夫链(含答案)
- 管廊钢结构防火涂料施工方案
- 不窜货保证书
- 《提高利润的78个方法》
- DB34T 3663-2020 植保无人飞机农田施药作业技术规范
评论
0/150
提交评论