lazyLoadingEnabled和aggressiveLazyLoading作用
- N+1问题:假设现在有N个关联关系完成了级联,那么只要再引入一个关联关系,就变成了N+1级联,所有级联的SQL都会被执行,显然会有很多我们不需要的数据被加载进来,这就造成了极大的资源浪费。
- 引入延迟加载的目的:为了处理N+1问题(级联加载的性能问题)
- 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 按需求加载。
- 有时全局配置不是那么的适合自己需求,mybatis 提供了局部延时加载功能。
在 collection 或 association 元素上加入属性值 fetchType 就可以了,他有两个取值 eager 和 lazy。
lazyLoadingEnabled和aggressiveLazyLoading作用相关推荐
- 关联查询---Mybatis学习笔记(九)
商品订单数据模型 注意:分析数据库表和数据库表之间的关系可以先通过数据库中的主外键关系来分析,然后通过业务中的实际的关系来分析. 1.一对一查询 需求: 查询订单信息,关联查询创建订单的用户信息 分析 ...
- 通过项目逐步深入了解Mybatis(四)
相关阅读: 1.通过项目逐步深入了解Mybatis<一> 2.通过项目逐步深入了解Mybatis<二> 3.通过项目逐步深入了解Mybatis<三> 本项目所有代码 ...
- MyBatis学习随记
1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 Public static void main(String[] args) { Conn ...
- 深入浅出MyBatis:「映射器」全了解
本篇文章是「深入浅出MyBatis:技术原理与实践」书籍的总结笔记. 上一篇总结了MyBatis的配置,详细说明了各个配置项,其中提到了映射器,它是MyBatis最强大的工具,也是使用最多的工具. 通 ...
- 【Java EE】映射器
映射器 映射器是MyBatis最复杂且最重要得组件,它由一个接口加上XML文件(或者注解)组成.在映射器中可以配置参数.各类的SQL语句.存储过程.缓存.级联等复杂的内容,并且通过简易的映射规则映射到 ...
- 深入MyBatis开发之mybatis映射器
映射器的配置元素有select/insert/update/delete/sql/resultMap/cache/cache-ref八个常用的,parameterMap基本不用,也不建议使用. MyB ...
- 【MyBatis】 ---- 映射器(接口+XML文件)
目录 一. 配置元素 1. select元素 2. insert元素 3. sql元素 4. resultMap元素 5. resultMap元素中的级联 (代码github) 一.映射器的配置元素 ...
- mybatis 的延迟加载
mybatis 的延迟加载 (1)什么是延迟加载? 延迟加载,也称为懒加载(LazyLoding). 当代码中执行到查询语句时,并不是直接到DB中执行select语句进行查询,而是根据设置好的延迟策略 ...
- java用到的yaml文档
文章目录 yaml文件 1.Spring模块 ①application ②profiles ③cloud Ⅰ nacos Ⅱ sentinel Ⅲ config Ⅳ gateway ④servlet ...
最新文章
- 脚本检测到文件特定词后做下一步动作 down restart
- 企业网站标题优化要学会运用技巧和方法
- angular跳转指定页面_通过 angular CDK 实现页面元素拖放
- 【转载】用JS控制输入内容
- Android WebView 开发详解(三)
- hdu Candy Sharing Game
- Spring Boot 2.2 增加了一个新功能,启动飞起~
- 三大运营商2月份运营数据发布:超过一半的中国人都在用移动
- 基于python的性能负载测试Locust-6-脚本编写之使用HTTP client
- 孙鑫VC学习笔记:第十五讲 (二) 线程创建方法
- 学习指南:零基础java入门教程(入门篇)
- java扫雷游戏设计总结_JAVA版扫雷游戏的设计与实现
- QOS端口限速EMAIL流量限速
- Windows 7装机必备 - 主流品牌驱动大集合
- [WinAPI]通过Windows系统CLSID(GUID)打开系统指定窗口,及部分[上帝模式]命令
- ProFTPD部署教程
- 【宇麦科技】群晖NAS套件之Drive的安装与使用(一),保姆级教程来喽!
- 一、SM1P可编程步进电机控制器简介
- SSM三大框架整合(Spring+SpringMVC+MyBatis)
- (转)活出生命的成就