JavaEE Mybatis(四)延迟加载
1. 延迟加载
什么是延迟加载?延迟加载 的反义词就是 立即加载,
立即加载 是指在取得“省”对象时(此处的数据库表:省包含市),省中所有的“市”对象都已经提取到内存中,因此其非常耗费 CPU 和内存资源。有时只需要省信息,而并不需要市信息,但立即加载还是把市信息也一同提取出来,这样的情况下就要使用延迟加载了。
延迟加载 就是在使用到市对象时,再把其加载到内存中来,如果不使用市对象,就不加载到内存中,这就是延迟加载特性。
2. 默认立即加载策略
MyBatis 默认的行为就是 立即加载。
当在程序中 调用到 List 中的 Userinfo 对象时,就采取了立即加载策略,立即将 Userinfo 对应的对象加载到内存中。
3. 使用全局延迟加载策略与两种加载方式
在配置文件中使用如下配置代码开始延迟加载:
<settings>
<setting name="logImpl" value="LOG4J" />
<setting name="lazyLoadingEnable" value="true" />
</settings>
但延迟加载具体的实现方式分为两种。
(1)获得子表时再进行加载。
(2)打印主表信息时加载子表。
这两种延迟加载的方式可以使用以下配置来进行切换,默认情况时第一种:
<settings>
<setting name="aggressiveLazyLoading" value="" />
</settings>
更改配置文件。代码如下:
<settings>
<setting name="logImpl" value="LOG4J" />
<setting name="lazyLoadingEnable" value="true" />
</settings>
4. 使用 fetchType 属性设置局部加载策略
使用配置选项 lazyLoadingEnabled 和 aggressiveLazyLoading 设置的是全局加载行为。如果想针对某一个映射来决定是延迟加载还是立即加载,那么可以在
分类:
JavaSE/JavaEE
标签:
JavaEE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具