- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章节高级数据检索
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关闭了,再返回对象就会抛出异常. 提前关闭session ⑤类级别延迟对get或Query.list()方法不起作用,立即检索 立即检索,select操作触发 相当于lazy=false,执行load()函数 ⑴关联实体的载入策略(one-to-one或many-to-one) join:使用连接查询检索对象;select(默认):抓取在前面查询到的所有实体对象的关联对象 fetch 决定关联实体什么时候载入 (proxy|false) lazy 注意: ①当关联实体使用fetch=join时,lazy的延迟加载失去意义.,因为连接查询把关联对象同时载入. ②关联实体是否延迟加载,还要参考关联实体的类级别载入策略. 主类级别检索策略 关联实体的检索策略 关联类的检索策略 立即载入 false false 立即载入 true false 立即载入 false proxy 延迟载入 默认(true) 默认(proxy) 关联类什么时候被载入 关联类lazy属性 many-to-one中lazy属性 只要有一个条件为立即载入,最后关联类立即载入 注意:只要many-to-one中lazy属性为false,不用判断关联类的lazy属性,最终关联类立即载入; 如果many-to-one中lazy属性为proxy,还需要判断关联类lazy属性. 关联类立即加载 主类延迟加载 关联类立即加载 主类立即加载 主类延迟加载 关联类延迟加载 关联类立即加载等同 fetch=“join” 进行左外连接 进行左外连接 连接操作表示立即加载 (2)关联集合的载入策略(one-to-many或many-to-many) 采用什么载入策略,是由set中的lazy属性和fetch属性决定的. join|subselect|select(默认) subselect:把检索得到的所有主类的关联集合都初始化 fetch 决定集合属性什么时候载入,true|extra|false extra:进一步延迟集合检索,对于集合中的每一个对象
您可能关注的文档
- 第六单元﹝饮料瓶与环境﹞.ppt
- 第六章PLC模拟量处理功能.ppt
- 第六章T_SQL语言基础.ppt
- 第六章ERP系统的实施与评价.ppt
- 第六章1–支护结构的岩体力学计算方法.ppt
- 第六章 假设检验﹝2﹞.ppt
- 第六章VisualFoxPro程序设计.ppt
- 第六次团日活动﹝儿童节快乐﹞.ppt
- 第六章_包装设计中的文字和图形﹝5﹞.ppt
- 第六章_包装设计中的文字和图形﹝3﹞.ppt
- Unit 6 Get Close to Nauture Lesson 22 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 23 -课件-2025-2026学年度北京版英语四年级上册.pptx
- 2025食品饮料行业AI转型白皮书-2025食品饮料行业数智化转型领先实践.pdf
- Unit 7 Be Together Lesson 24 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 25 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 26 -课件-2025-2026学年度北京版英语四年级上册.pptx
- 2025年广州体育职业技术学院单招职业倾向性考试题库完美版.docx
- 软件公司员工考勤异常处理.doc
- 2025年土地登记代理人之土地登记相关法律知识题库500道及完整答案【有一套】.docx
- 2025年四平职业大学单招职业适应性考试题库含答案.docx
文档评论(0)