Hibernate的检索策略小结
日期:2007年8月16日 作者: 查看:[大字体 中字体 小字体]-
Hibernate的检索策略包括类级别检索策略和关联级别检索策略。 类级别检索策略有立即检索和延迟检索,默认的检索策略是立即检索。在Hibernate映射文件中,通过在
上配置lazy属性来确定检索策略。对于Session的检索方式,类级别检索策略仅适用于load方法;也就说,对于get、qurey检索,持久化对象都会被立即加载而不管lazy是false还是true.一般来说,我们检索对象就是要访问它,因此立即检索是通常的选择。由于load方法在检索不到对象时会抛出异常(立即检索的情况下),因此我个人并不建议使用load检索;而由于 中的lazy属性还影响到多对一及一对一的检索策略,因此使用load方法就更没必要了。 关联级别检索策略有立即检索、延迟检索和迫切左外连接检索。对于关联级别检索,又可分为一对多和多对多、多对一和一对一两种情况讨论。
一对多和多对多关联关系一般使用
配置。 有lazy和outer-join属性,它们的不同取值绝对了检索策略。 1)立即检索:这是一对多默认的检索策略,此时lazy=false,outer-join=false.尽管这是默认的检索策略,但如果关联的集合是无用的,那么就不要使用这种检索方式。
2)延迟检索:此时lazy=true,outer-join=false(outer-join=true是无意义的),这是优先考虑的检索方式。
3)迫切左外连接检索:此时 lazy=false,outer-join=true,这种检索策略只适用于依靠id检索方式(load、get),而不适用于query的集合检索(它会采用立即检索策略)。相比于立即检索,这种检索策略减少了一条sql语句,但在Hibernate中,只能有一个
配置成 outer-join=true. 多对一和一对一检索策略一般使用
、 配置。 中需要配置的属性是 outer-join,同时还需要配置one端关联的 的lazy属性(配置的可不是 中的lazy哦),它们的组合后的检索策略如下: 1) outer-join=auto:这是默认值,如果lazy=true为延迟检索,如果lazy=false为迫切左外连接检索。
2) outer-join=true,无关于lazy,都为迫切左外连接检索。
3) outer-join=false,如果lazy=true为延迟检索,否则为立即检索。
可以看到,在默认的情况下(outer-join=auto,lazy=false),对关联的one端对象Hibernate采用的迫切左外连接检索。依我看,很多情况下,我们并不需要加载one端关联的对象(很可能我们需要的仅仅是关联对象的id);另外,如果关联对象也采用了迫切左外连接检索,就会出现select语句中有多个外连接表,如果个数多的话会影响检索性能,这也是为什么Hibernate通过hibernate.max_fetch_depth属性来控制外连接的深度。对于迫切左外连接检索,query的集合检索并不适用,它会采用立即检索策略。
对于检索策略,需要根据实际情况进行选择。对于立即检索和延迟检索,它们的优点在于select语句简单(每张表一条语句)、查询速度快,缺点在于关联表时需要多条select语句,增加了访问数据库的频率。因此在选择即检索和延迟检索时,可以考虑使用批量检索策略来减少select语句的数量(配置batch-size属性)。对于切左外连接检索,优点在于select较少,但缺点是select语句的复杂度提高,多表之间的关联会是很耗时的操作。另外,配置文件是死的,但程序是活的,可以根据需要在程序里显示的指定检索策略(可能经常需要在程序中显示指定迫切左外连接检索)。为了清楚检索策略的配置效果如何,可以配置show_sql属性查看程序运行时Hibernate执行的sql语句。
- [1] [2] 下一页
-
- Hibernate的检索策略小结 相关文章:
- ·XP提示“虚拟内存不足”原因总结
- ·学习CSS制作网页总结的一些经验技巧
- ·结束SQL注入隐患3招
- ·Coreldraw结合 R.A.V.E 制作动画
- ·cn域名收录实验小结
- ·CSS常见问题和技巧总结
- ·理解ASP.NET中的三层结构
- ·HTML基础:HTML的基本结构
- ·Web 的内容、结构与表现漫谈
- ·QQ宠物猪猪恋爱结婚之路及问答手册
- Hibernate的检索策略小结 相关软件
- ·《冰封王座》地图:梦之旅团1.41—圣彼得的终结
- ·《结界师 鸟森妖奇谈》(日)模拟器
- ·《魔鬼终结者》模拟器 枪战类街机
- ·《仙剑奇侠传四》结局动画
- ·《魔兽》三国姜维传 结局电影
- ·《新结婚时代》
- ·《请给我结果》
- ·国民待遇启示录:二元结构下的中国
- ·第三课堂之户外结绳
- ·二00四年总结
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Visual Studio 2005集成开发环境图解
- ·利用UML类图设计Java应用程序详解(1)
- ·软件工程的未来之路与我们的解决之道?
- ·VS2005(c#)项目调试问题解决方案集锦
- ·Atlas应用程序的调试技巧
- ·代码编写中的心理学与美学
- ·函数库、组件产品的测试方法
- ·IBM 建立商业解决方案中心
- ·IBM Rational推出SOAD策略
- ·通过RUP用例进行需求管理的可追踪性策略(1)
- ·软件项目在变化的需求中获得成功(1)
- ·界面需求的分析方法(1)
- ·探究需求管理的本质(1)
- ·利用数据绑定和模板创建Atlas应用程序
- ·BEA和Siebel联合提供CRM软件
- ·BEA新任亚太区总经理 曾任惠普软件部高管
- ·Java从老虎变野马 好事还是坏事?
- ·Web服务的期望与现实
- ·SAP:未来管理软件将像玩具
- ·面向服务的体系结构的成熟度模型
