MyBatis延迟加载

49 阅读1分钟

MyBatis延迟加载

什么是延迟加载?

在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定要加载他的订单信息。此时就是我
们所说的延迟加载。

在⼀对多中,当我们有⼀个⽤户,它有个100个订单
在查询⽤户的时候,要不要把关联的订单查出来?
在查询订单的时候,要不要把关联的⽤户查出来?

在查询⽤户时,⽤户下的订单应该是,什么时候⽤,什么时候查询。
在查询订单时,订单所属的⽤户信息应该是随着订单⼀起查询出来。

延迟加载

就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据。延迟加载也称懒加载。

  • 优点:
    先从单表查询,需要时再从关联表去关联查询,⼤⼤提⾼数据库性能,因为查询单表要⽐关联查询多张表
    速度要快。
  • 缺点:
    因为只有当需要⽤到数据时,才会进⾏数据库查询,这样在⼤批量数据查询时,因为查询⼯作也要消耗时
    间,所以可能造成⽤户等待时间变⻓,造成⽤户体验下降。

延迟加载是基于嵌套查询来实现的

实现

局部延迟加载

在association和collection标签中都有⼀个fetchType属性,通过修改它的值,可以修改局部的加载策
略。