当前位置:首页 > 开发 > 开源软件 > 正文

Ibatis延迟加载

发表于: 2014-03-29   作者:aoyouzi   来源:转载   浏览次数:
摘要: 延迟加载 在运行上篇的例子时,通过观察期间的日志输出顺序我们可以发现,在我们执行sqlMap.queryForList("User.getUsers", "")时,实际上ibatis只向数据库发送了一条select id, name, sex from t_user SQL。而用于获取Address记录的SQL,只有在我们真正访问address对象时,才开

延迟加载

在运行上篇的例子时,通过观察期间的日志输出顺序我们可以发现,在我们执行sqlMap.queryForList("User.getUsers", "")时,实际上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"。

Ibatis延迟加载

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
BATIS In Action为iBATIS展现自己强大功能提供了保证,iBATIS也可以完成更为复杂的任务。在本章中,
一个对象,它虽然不包含所需要的所有数据,但是它知道怎么获取这些数据 设计专门的对象来把数据从DB中
一个对象,它虽然不包含所需要的所有数据,但是它知道怎么获取这些数据 设计专门的对象来把数据从DB中
原理是分段加载图片,主要用于大型网站节省带宽,可是他们提供的东西压缩混淆看不清,还有的要基于
看来 lazyload.js 不能真正的实现数据动态加载了,只是一个样子,其实我们实现动态加载不过是为了减
看来 lazyload.js 不能真正的实现数据动态加载了,只是一个样子,其实我们实现动态加载不过是为了减
看来 lazyload.js 不能真正的实现数据动态加载了,只是一个样子,其实我们实现动态加载不过是为了减
Hibernate3开始增加了通过property节点的lazy属性,为特定的属性指定延迟加载策略,以避免实体整体
1 延迟加载策略   Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术。这种延迟加载保证
Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号