Hibernate 检索策略
来源:互联网 发布:中科院成都计算所 知乎 编辑:程序博客网 时间:2024/05/04 13:09
在默认情况下,当Hibernate从数据库中加载对象时,会同时加载所有关联的对象. 但实际应用中可能不需要使用其关联的对象,这样就可能通过设置Hibernate的检索策略,来优化检索性能.
Hiberante提供了3种检索策略:1)立即检索 2)延迟检索 3)迫切左外连接检索
下面先从概念上去理解,先在脑袋中有个印象,看到了这样的用法知道是怎么回事,它在做什么.为什么这样做.
真正的理解要在以后的项目经验中慢慢去体会,
下表列出了类级别和关联级别可选的检索策略,以及默认的检索策略.
检索策略的作用域 可选的检索策略 默认的检索策略 运行时受影响的Session的检索方法 类级别 立即检索
延迟检索 立即检索 仅影响load()方法 关联级别 立即检索
延迟检索 多对一和一对一关联为外连接检索 影响load(),get()和find()方法 迫切左外连接检索 一对多和多对多关联为立即检索
下表列出了 3种检索策略的运行机制
下表列出了映射文件中用于设定检索策略的几个属性
如果为true,表示使用延迟检索策略.在<class>和<set>元素中包含此属性
outer-join auto. true, false 在<many-to-one>和<one-to-one>元素中为auto;在<set>元素中为false 如果为true,表示使用迫切左外连接检索策略.在<many-to-one>.<one-to-one>和<set>元素中包含此属性 batch-size 正整数 1 设定批量检索的数量.如果设定此项,合理的取值在3~10之间.仅适用于关联级别的立即检索和延迟检索.在<class>和<set>元素中包含此属性下表比较Hiberante的三种检索策略
(2)可能会加载应用程序不需要访问的对象,白白浪费许多内存空间 (1)类级别
(2)应用程序需要立即访问的对象
(3)使用了第二级缓存 延迟检索 由应用程序决定需要加载那些对象,可以避免执行多余的select语句,以及避免加载应用程序不需要访问的对象.因此能提高检索性能,并且能节省内存空间 应用程序如果希望访问游离状态的代理类实例,必须保证它在持久化状态已经被初始化
(1)一对多或者多对多关联
(2)应用程序不需要立即访问或者根本不会访问的对象
(2)使用了外连接,select语句数目少 (1)可能会加载应用程序不需要访问的对象,白白浪费许多内存空间
(2)复杂的数据库表连接也会影响检索性能 (1)多对一或者一对一关联
(2)应用程序需要立即访问的对象
(3)数据库系统具有良好的表连接性能
- Hibernate的检索策略
- Hibernate的检索策略
- Hibernate的检索策略
- hibernate检索策略
- hibernate检索策略1
- Hibernate 检索策略
- Hibernate中检索策略
- Hibernate检索策略总结
- Hibernate的检索策略
- Hibernate检索策略
- Hibernate的检索策略
- hibernate的检索策略
- Hibernate的检索策略
- Hibernate检索策略
- Hibernate 检索策略
- hibernate中的检索策略
- Hibernate检索策略
- Hibernate配置---检索策略
- mysql常用命令
- JavaScript 面向对象程序设计(上)--封装
- ASP.NET跨页面传值技巧总结
- a simple jsm sample
- 中文搜索 同时用三家引擎 searchall
- Hibernate 检索策略
- 前些日子做的一个电力设备检测软件
- 逐个字符比较两篇文档里的内容?
- 秋日迷醉
- 按顺序输出控件名称
- Oracle内建函数(greatest, least, to_single_byte)
- 品牌笔记本代工情况
- MSN Space 部分改版,好得很
- 大型web2.0互动网站设计方案:分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站