MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询的时候,按照设 置延迟加载规则推迟对关联对象的select检索。延迟加载可以有效的减少数据库 的压力。
注意:MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象 都是直接执行查询语句的。
1.直接加载
2.侵入式延迟加载(aggressiveLazyLoading) 也可看做立即加载
3.深度延迟加载
直接加载:即执行对象的select语句,完成对主加载马上执行对关联对象的select查询。
侵入式延迟加载:执行对主加载对象的查询时,不会执行对关联对象的查询。但是当要访问主加载对象的详情时马上执行对关联对象的select查询。即对关联对象的执行查询,
侵入到了主加载对象的访问详情中。也可理解为:将关联对象的详情侵入到主加载对象的详情中去,即将关联对象的详情作为主加载对象的一部分出现了!
深度延迟:执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的select查询。只有当真正访问关联对象的详情时,
才会执行对关联对象的select查询。
注意的问题:延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的select语句,不能是使用多表连接所进行的select查询。因为,多表连接查询,
实质是对一张表的查询,对由多个表连接后形成的一张表的查询。会一次性将多张表的所有信息查询出来。
原文:https://www.cnblogs.com/lowerma/p/11671065.html