《第6章高级数据检索.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate ORM 最佳实践 第6章 高级数据检索 回顾 使用动态类进行关系映射 使用组件component进行关系映射 映射值类型的集合 一个持久化类对应多个表的映射 目标 QBC(query by criteria)面向对象查询方式 利用HQL和criteria连接查询 Hibernate的数据检索策略 QBC数据检索 HQL示例 QBC查询主要类 Criteria接口:用来设置各种查询条件的 示例 示例 分析-1 分析-2 示例 代码 代码 示例 代码 DetachedCriteria类 在前面例子中,在使用Criteria对象的前提必须有一个Session对象,因此这种依赖关系限制Criteria接口的使用范围。 考虑以下情况: ①需要在没有Session对象的情况下创建数据查询; ②同一个数据查询跨越多个Session对象 Hibernate提供一个可以脱离Session对象的查询对象:DetachedCriteria 示例 小结 Criterion类和Restrictions类 Restrictions类的方法 Projection和Projections类 Projections的方法 示例 逻辑组合 如果逻辑关系比较复杂,可以使用Restrictions.disjunction()代表逻辑或、Restrictions.conjuction()代表逻辑与 举例查询(QBE) 使用Example类进行查询 连接查询 三中连接方式:内连接、左外连接、右外连接 示例 HQL支持fetch查询 在HQL中使用fetch,在返回的list中存放的对象是主类对象,而不是以对象组形式返回关联的两个类对象。 检索策略-类级别 类级别 :关于POJO类什么时候被载入 类级别延迟加载(代理检索策略) 示例 类级别延迟加载 示例 示例 关联级别检索 关联级别:检索主类相关联的实体或实体集合什么时候载入的策略 代码 关联类的载入策略 示例-1 示例-2 示例-3 示例-4 示例-5 关联级别检索 示例 示例 示例 示例 代码 Batch载入策略 Batch策略:对关联集合可以设置批量载入,可以设置属性:batch-size=整型值 代码 代码 总结 QBC(query by criteria)面向对象查询方式 利用HQL和criteria连接查询 Hibernate的数据检索策略 ③如果load的对象不存在,在执行load()时是不会发现的,只有在访问非主键属性时才抛出异常; 主键不存在 Load()执行时正常的,没发现id不存在 ④对象只能在session范围内被加载,如果session关闭了,再返回对象就会抛出异常. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 提前关闭session Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. ⑤类级别延迟对get或Query.list()方法不起作用,立即检索 立即检索,select操作触发 相当于lazy=false,执行load()函数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. ⑴关联实体的载入策略(one-to-one或many-to-one) lazy fetch 决定关联实体什么时候载入 (proxy|false) join:使用连接查询检索对象;select(默认):抓取在前面查询到的所有实体对象的关联对象 注意: ①当关联实体使用fetch=join时,lazy的延迟加载失去意义.,因为连接查询把关联对象同时载入. ②关联实体是否延迟加载,还要参考关联实体的类级别载入策略. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 主类级别检索策略 关联实体的检索策略 关联类的检索策略 Evaluation only. Created with Aspose.Slides for .NET 3.5 C

文档评论(0)

gcv458 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档