我是靠谱客的博主 可耐樱桃,最近开发中收集的这篇文章主要介绍mybatis的延迟加载,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<settings>  

   <setting name="lazyLoadingEnabled" value="true"/>  

    <setting name="aggressiveLazyLoading" value="false"/> 

<setting name="lazyLoadTriggerMethods" value="true"/> 

</settings>  

 

aggressiveLazyLoading:这个参数的含义是,当该参数设置为true时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载,反之,每种属性都将按需加载。当我们从数据库中查询到数据后会给实体类中关联对象赋值,会调用关联对象属性的setter方法,这会触发上述规则,导致本该延迟加载的属性直接加载,为了避免这种情况,需要将其设置为false。

lazyLoadingEnabled这个属性是开启全局延迟加载,不用手动在单个关联中配置。

lazyLoadTriggerMethods这个参数的含义是当调用配置中的方法时,加载全部的延迟加载数据。默认值是“equals,clone,hashCode,toString”。

延迟加载有时候会取不到值的问题:mybatis延迟加载时通过动态代理实现的,当调用配置为延迟加载的属性方法时,动态代理的操作会被触发,这些额外的操作就是通过mybatis的sqlSession去执行嵌套的SQL的。由于在和某些框架集成时,sqlSession的生命周期交给了框架来管理,因此当对象超出sqlsession生命周期调用时,会由于链接关闭等问题而抛出异常。在和spring集成时,要确保只能在Service层调用延迟加载的属性。当结果从service层返回至Controller层时,如果获取延迟加载的属性值,会因为sqlsession已经关闭而抛出异常。


最后

以上就是可耐樱桃为你收集整理的mybatis的延迟加载的全部内容,希望文章能够帮你解决mybatis的延迟加载所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部