lazyLoadingEnabled和aggressiveLazyLoading作用

  1. N+1问题:假设现在有N个关联关系完成了级联,那么只要再引入一个关联关系,就变成了N+1级联,所有级联的SQL都会被执行,显然会有很多我们不需要的数据被加载进来,这就造成了极大的资源浪费。
  2. 引入延迟加载的目的:为了处理N+1问题(级联加载的性能问题)
  3. MyBatis的配置文件中两个全局配置可以配置延迟加载 ,如下:
  <settings>  
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。默认:true  -->  
        <!-- <setting name="lazyLoadingEnabled" value="true"/>  -->
        <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性 . 默认:true-->
        <!-- <setting name="aggressiveLazyLoading" value="true"/>   -->
  </settings>

     如果设置 lazyLoadingEnabled = false,则禁用延迟加载,会级联加载所有关联对象的数据
     如果设置 lazyLoadingEnabled = true,默认情况下mybatis 是按层级延时加载的。
     如果在设置了1.1 后,使用 aggressiveLazyLoading 可以按需加载。
     aggressiveLazyLoading = true,mybatis 是按层级延时加载
     aggressiveLazyLoading = false,mybatis 按需求加载。

  1. 有时全局配置不是那么的适合自己需求,mybatis 提供了局部延时加载功能。
    在 collection 或 association 元素上加入属性值 fetchType 就可以了,他有两个取值 eager 和 lazy。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值