什么是延迟加载?

  1. 延迟加载的条件:resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。

  2. 延迟加载的好处: 先从单表查询、需要时再从关联表去关联查询,大大提高 数据库性能,因为查询单表要比关联查询多张表速度要快。

  3. 延迟加载的实例: 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。

Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。

它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。这就是延迟加载的基本原理。

当然了,不光是Mybatis,几乎所有的包括Hibernate,支持延迟加载的原理都是一样的。

相关资源:https://blog.csdn.net/shfqbluestone/article/details/52888144

mybatis是否支持延迟加载?延迟加载的原理是什么相关推荐

  1. Mybatis整合log4j、延迟加载

    目录 整合log4j 延迟加载 Mybatis是否支持延迟加载?如果支持,它的实现原理是什么? MyBatis实现一对多有几种方式,怎么操作的? 整合log4j 1. 导入依赖 总共就2步 1.  先 ...

  2. association 实现MyBatis分步查询与延迟加载

    一.分步查询 1.1什么时候可以用到分步查询 有的时候需要我们对数据库进行关联查询,比如Employee 持有另一个Department对象的一个引用,我们希望在查询Employee 的时候把Depa ...

  3. java ssm框架 缓存_SSM框架之Mybatis(7)延迟加载、缓存及注解

    Mybatis(7)延迟加载.缓存及注解 1.延迟加载 延迟加载: 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据.延迟加载也称懒加载. **好处:**先从单表查询,需要时再从关联表去关 ...

  4. ORM框架之Mybatis(三)延迟加载、开启一二级缓存及使用注解增删改查

    一.Mybatis延迟加载策略 Mybatis中一对一,一对多,多对多关系的配置及实现,可以实现对象的关联查询.实际开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的账户信息.此时就是 ...

  5. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j

    MyBatis优缺点 select延迟加载 接口式MyBatis编程 一级缓存 一级缓存原理 一级缓存命中原则 一级缓存销毁 一级缓存避免脏读不可重复读 一级缓存与spring@事务 二级缓存 与一级 ...

  6. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  7. mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存

    设置延迟加载需要在mybatis.xml中设置 注: 侵入式延迟加载为真时是延迟加载 侵入式延迟加载为假时是深度延迟加载 <!-- 延迟加载和深度延迟加载 --><settings& ...

  8. MyBatis (五)—— 延迟加载

    文章目录 高级映射 一对一关联映射 方式一:resultType 方式二:resultMap 一对多关联映射 方式一:resultType 方式二:resultMap 多对多关联映射 延迟加载 高级映 ...

  9. 单例设计模式-静态内部类-基于类初始化的延迟加载解决方案及原理解析

    刚刚线程1看不到线程0的重排序,我们创建一个类,这个方案是使用静态内部类来解决,一会我们也会分析一下原理,我们创建一个静态内部类,静态内部类的代理模式,JVM在类的初始化阶段,也就是class被加载后 ...

最新文章

  1. 1045 Favorite Color Stripe(LCS解法) 需再理解
  2. oracle学习 sql基本语法(三),Oracle数据库学习三
  3. 第6章 数组----复制数组
  4. oracle 取系统当前年份_Oracle如何获取系统当前时间等操作实例
  5. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
  6. oracle查询 :一个角色包括的系统权限,对象权限,Oracle有多少种角色,某个用户有什么角色
  7. php mysql 写法_php 类的写法
  8. 爬虫-scrapy框架-起点中文网的爬取
  9. 英特尔资深院士马克·波尔的传奇人生 | 人物志
  10. NodeJS链接MongDB
  11. 用户不在sudoers文件中的解决方法 .
  12. 阿里云 网站https设置 sll申请与nginx跳转配置
  13. mapper.xml 的配置
  14. 集成融云没有ipc进程的天坑
  15. C#遍历类的所有属性,遍历list集合的所有属性
  16. mysql表analyze_MySQL ANALYZE Optimize Check Table使用详解
  17. DX11与多线程渲染
  18. 计算机应用高级工程师,高级工程师职称考试项目
  19. 数据分析报表设计开发要素
  20. C语言,利用二维数组及条件语句计算闰年和平年每月所对应的天数

热门文章

  1. 保存准考证电脑快捷键
  2. MPLS ××× 网络中的OSPF Sham-Link
  3. DOS下解压缩ZIP文件
  4. 通用的统一权限管理系统
  5. python彩票分析_028期海天福彩3D预测奖号:百十个位012路分析
  6. c语言反推三角函数,【图】MACD反推公式的问题_反三角函数公式大全,年龄问题的所有公式,配套问题公式大全,反导数公式大全,拉氏反变换公式_指标编写互助答疑论坛_理想论坛 - 股票论坛...
  7. 什么牌子的蓝牙耳机平价又好用?2021学生党常用耳机推荐
  8. axure的html按钮设置背景,Axure格式和样式功能详解
  9. html书签解析,解析netscape样式书签html文件嵌套数组
  10. Excle条件格式与公式