延迟加载

  延迟加载对主对象都是直接加载,只有对关联对象是延迟加载。

  延迟加载可以减轻数据库的压力,

  延迟加载不可是一条SQL查询多表信息,这样构不成延迟加载,会形成直接加载。

  延迟加载分为三种类型:

1.直接加载

执行完主对象之后,直接执行关联对象。

2.侵入式加载

在执行主对象详情的时候,执行关联对象。

3.深度延迟加载

执行完主对象或主对象详情不会执行关联对象,只有用到关联对象数据的时候才走深度延迟加载。

  延迟加载默认情况下是关闭状态(false) 延迟加载下的侵入式加载默认情况下是开启状态(true)  在这种情况下延迟加载不生效, 比如说延迟加载是一个大的水龙头总闸,如果总闸没开,那么总闸里面的小的闸肯定没有水。如果想要使用延迟加载必须写成true

  现在知道延迟加载的状态,那他是在哪里设置开启关闭状态的呢? 答案是在大配置文件中设置延迟加载的状态

看一下几个例子

1.默认情况的延迟加载  (这是在MyBatis3.4.1版本之前的默认情况) :(aggressiveLazyLoading)侵入式延迟加载为true, 在3.4.1之后的版本(aggressiveLazyLoading)侵入式延迟加载默认值为false

  2.侵入式延迟加载

现在看一下访问主属性的侵入式延迟加载的状态如何

  3.深度延迟加载

深度延迟加载 大配置中的设置

只访问主对象的属性,深度延迟加载的状态为:

现在我们看一下访问关联对象的属性,深度延迟加载的状态为:

在大配置文件设置延迟加载是使用的是setting节点,与其他节点位置顺序不要乱。

大配置中的延迟加载代码:

<settings>    <setting name="lazyLoadingEnabled" value="true"/>    <setting name="aggressiveLazyLoading" value="false"/>   <!--现在的状态为深度延迟加载--></settings>
<settings>    <setting name="lazyLoadingEnabled" value="true"/>    <setting name="aggressiveLazyLoading" value="true"/>   <!--现在的状态为侵入式延迟加载--></settings>
<settings>    <setting name="lazyLoadingEnabled" value="false"/>    <setting name="aggressiveLazyLoading" value="false"/>   <!--现在的状态为直接加载-->(3.4.1版本之后的直接加载设置)</settings>
<settings>    <setting name="lazyLoadingEnabled" value="false"/>    <setting name="aggressiveLazyLoading" value="true"/>   <!--现在的状态为直接加载-->(3.4.1版本之前的直接加载设置)
</settings>
 

转载于:https://www.cnblogs.com/java-263/p/9940867.html

MyBatis 延迟加载的三种加载方式深入,你get了吗?相关推荐

  1. ios首次加载web_IOS_IOS中UIWebView的使用详解,一、初始化与三种加载方式 UI - phpStudy...

    IOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种 ...

  2. HBase协处理器三种加载方式

    一.协处理器简介 HBase协助处理器允许用户将部分逻辑在数据存放端即 HBase RegionServer 服务端进行计算,也即允许用户在 RegionServer 运行用户自定义的代码.这相当于是 ...

  3. Entity Framework关联实体的三种加载方法

    推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...

  4. hive--udf函数(开发-4种加载方式)

    UDF函数开发 标准函数(UDF):以一行数据中的一列或者多列数据作为参数然后返回解雇欧式一个值的函数,同样也可以返回一个复杂的对象,例如array,map,struct. 聚合函数(UDAF):接受 ...

  5. 动态链接库dll的两种加载方式

    在第一篇技术博客"动态链接库简介"中说到了两种加载方式,当时没有详细说明,这里详细说明一下 可以通过两种方式 1.隐式链接(需要.dll,.lib,.h) 2.显式链接(需要.dl ...

  6. Android图片加载之认识bitmap的四种加载方式

    Android的Bitmap有四种高效加载方式 从获取方式分: (1)以文件流的方式 假设在sdcard下有 test.png图片 FileInputStream fis = new FileInpu ...

  7. 最新完整代码:使用word2vec预训练模型进行增量训练(两种保存方式对应的两种加载方式)适用gensim各种版本

    两种方式加载预训练模型(保存方式不一样,加载方式也不一样) 以腾讯训练的100为word2vec small版本为例 word2vec预训练模型下载 腾讯:https://ai.tencent.com ...

  8. 百度地图API的两种加载方式

    1. 同步加载 直接在页面中使用script标签,引入api地址即可,如下: <script src="http://api.map.baidu.com/api?v=2.0&a ...

  9. 【HTML】三种加载动画

    加载动画 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

最新文章

  1. 成天说要删库跑路,这次真的有人干了
  2. dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解
  3. 更改MySQL数据库目录位置
  4. C#中写简单的COM+组件
  5. Java中栈和队列的用法 Stack And Queue
  6. MongoDB数据库设计备忘
  7. WiFi 6 目前还不适合个人用户
  8. PHP极其强大的图片处理库Grafika详细教程(4):图形绘制
  9. js实现敏感词过滤算法
  10. c语言取反运算详细步骤,C语言取反运算~
  11. sql server 2000 各版本的区别
  12. 【备忘】修复过的SCCM报错
  13. 北邮校长方滨兴临别奉送学生“六好”锦囊
  14. 分布式文件存储:FastDFS简单使用与原理分析
  15. 集合竞价与连续竞价(开盘价、收盘价的生成)
  16. win7系统下安装LINUX系统教程
  17. 机器学习Python相关套件(np, plt, pd)
  18. 炒菜模型——各种编程范式
  19. scrapy实现二级页面爬取(以小说为例)
  20. 激光SLAM从理论到实践学习——第四节(激光SLAM的前端配准方法)

热门文章

  1. oracle 安装ora 27102,Oracle ora-27102 错误
  2. 计算机基础与应用2,计算机基础与应用(作业2)
  3. 零基础转行学习前端,需要学习哪些技术才可以找到工作吗?
  4. oracle 10g inctype参数使用,ORACLE 10G 重要命令及参数详解
  5. 实参与形参不兼容怎么解决_上岗证报名照片无法上传非官方解决方案
  6. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...
  7. java如何实现克隆接口_java之实现clone接口的详解,克隆一个对象--对应有浅克隆和深克隆,概念结合代码深入理解...
  8. 计算机调剂到材料科学与工程,2019年郑州大学材料科学与工程专业考研调剂信息...
  9. eclipse java jsp_Javaweb学习笔记4 使用Eclipse快速开发JSP
  10. Android加上base的作用,android-notifyDataSetChanged在BaseAdapter上不起作用