MyBatis延迟加载和缓存
1、延迟加载(lazyLoadingEnable) (1)什么是延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询的时候,按照设 置延迟加载规则推迟对关联对象的select检索。延迟加载可以有效的减少数据库 的压力。 注意:MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象 都是直接执行查询语句的。 加载时机: 直接加载 :即执行对象的select语句,完成对主加载马上执行对关联对象的select查询。 侵入式延迟加载 :执行对主加载对象的查询时,不会执行对关联对象的查询。但是当要访问主加载对象的详情时马上执行对关联对象的select查询。即对关联对象的执行查询, 侵入到了主加载对象的访问详情中。也可理解为:将关联对象的详情侵入到主加载对象的详情中去,即将关联对象的详情作为主加载对象的一部分出现了! 深度延迟: 执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也不会执行关联对象的select查询。只有当真正访问关联对象的详情时,才会执行对关联对象的select查询。 注意的问题:延迟加载的应用要求:关联对象的查询与主加载对象的查询必须是分别进行的select语句,不能是使用多表连接所进行的select查询。因为,多表连接查询,实质是对一张表的查询, 对由多个表连接后形成的一张表的查询