Ibatis延迟加载
延迟加载
在运行上篇的例子时,通过观察期间的日志输出顺序我们可以发现,在我们执行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"。
上一篇: 对象关系行为模式之延迟加载
推荐阅读
-
详解Android Webview加载网页时发送HTTP头信息
-
浏览器打开网页很慢如何提高ie浏览器的网页加载打开速度
-
SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟
-
Android仿微信Viewpager-Fragment惰性加载(lazy-loading)
-
钉钉直播延迟怎么办?钉钉直播延迟的解决方法
-
IE9浏览器被禁用的加载项怎么删除?
-
基于Android ListView之加载使用技巧
-
基于android示例程序(bitmapfun) 高效加载图片让人无语地方
-
Android基于Glide v4.x的图片加载进度监听
-
android调用H5显示加载中效果的示例代码