当前位置: 首页 > 图文教程 > Java技术 > Java Web开发 > Java Web开发:iBATIS延迟加载的那点事

Java Web开发
孙鑫老师原创:XML Schema初窥(二)
Java开源技术:J2EE应用服务器
用java开发Email工具之发送邮件
Java数据库程序中的存储过程设计
JAVA IO 设计模式彻底分析
Java Web开发:Java模式设计之单例模式(一)
Java Web开发:Java模式设计之单例模式(二)
Java Web开发:基于JVM的语言正在开始流行
Java Web开发:Java语言的十大问题,你能解决吗?
Java Web开发:Struts2 中.action和.do的奥秘
Java web:孙鑫老师谈Servlet的线程模型
java Web开发:孙鑫老师谈Session和Cookie的深入研究
Java Web开发:在线人数统计程序
Java Web开发:小编概述JSP技术
Java Web开发:FreeMarker模板使用方法讲解
Java Web开发:Tomcat和IIS的配合
Java Web开发:小编谈JFreeChart统计柱形图表事例
Java Web开发:程序员之家七月份Java Web开发总结
Java Web开发:Tomcat和Apache的配合
Java Web开发:iBATIS延迟加载的那点事

Java Web开发:iBATIS延迟加载的那点事


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 591 ::
收藏到网摘: n/a

延迟加载(lazy load)Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,在我们执行sqlMap.queryForList()时,实际上ibatis只向数据库发送了一条select id, name, sex from t_user SQL。而用于获取Address记录的SQL,只有在我们真正访问address对象时,才开始执行。

这也就是所谓的延迟加载(Lazy Loading)机制。即当真正需要数据的时候,才加载数据。延迟加载机制能为我们的系统性能带来极大的提升。试想,如果我们只需要获取用户名称和性别数据,在没有延迟加载特性的情况下,ibatis会一次将所有数据都从数据库取回,包括用户信息及其相关的地址数据,而此时,关于地址数据的读取操作没有意义,也就是说,我们白白在地址数据的查询读取上浪费了大量的系统资源。延迟加载为我们妥善的处理了性能与编码上的平衡(如果没有延迟加载,我们为了避免无谓的性能开销,只能专门为此再增加一个不读取地址信息的用户记录检索模块,无疑增加了编码上的工作量)。

 ibatis配置”中的内容:

<settings

……

enhancementEnabled="true"

lazyLoadingEnabled="true"

……

/>

Settings 节点有两个与延迟加载相关的属性lazyLoadingEnabled

enhancementEnabled,其中lazyLoadingEnabled设定了系统是否使用延迟加载

机制,enhancementEnabled设定是否启用字节码强化机制(通过字节码强化机制可

以为Lazy Loading带来性能方面的改进。

为了使用延迟加载所带来的性能优势,这两项都建议设为"true"