MyBatis 延迟加载的三种加载方式深入,你get了吗?
延迟加载
延迟加载对主对象都是直接加载,只有对关联对象是延迟加载。
延迟加载可以减轻数据库的压力,
延迟加载不可是一条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>
MyBatis 延迟加载的三种加载方式深入,你get了吗?的更多相关文章
- UIWebView的三种加载方式
一.使用UIWebView 将web content 嵌入到应用上. API提供了三种方法: - (void)loadRequest:(NSURLRequest *)request; - (void) ...
- sea.js及三种加载方式的异同
一.前言 浏览器本身并不提供模块管理的机制,过去网页开发中,为了使用各种模块,不得不在加入一大堆script标签.这样就使得网页体积臃肿,难以维护,还产生大量的HTTP请求,拖慢显示速度, ...
- 图解script的三种加载方式 异步加载顺序
摘录如下: 可以很清晰的看出: <script>: 脚本的获取和执行是同步的.此过程中页面被阻塞,停止解析. <script defer = "defer"> ...
- Entity Framework关联实体的三种加载方法
推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...
- EF三种加载方法
EF性能之关联加载 鱼和熊掌不能兼得 ——中国谚语 一.介绍 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和 ...
- Android Activity四种加载方式
Android之四种加载方式 (http://marshal.easymorse.com/archives/2950 图片) 在多Activity开发中,有可能是自己应用之间的Activity跳转,或 ...
- Xamarin Android Fragment的两种加载方式
android Fragment的重点: 3.0版本后引入,即minSdk要大于11 Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fra ...
- hive--udf函数(开发-4种加载方式)
UDF函数开发 标准函数(UDF):以一行数据中的一列或者多列数据作为参数然后返回解雇欧式一个值的函数,同样也可以返回一个复杂的对象,例如array,map,struct. 聚合函数(UDAF):接受 ...
- Android学习笔记_50_(转 四种加载方式详解(standard singleTop singleTask singleInstance)
Android之四种加载方式 (http://marshal.easymorse.com/archives/2950 图片) 在多Activity开发中,有可能是自己应用之间的Activity跳转,或 ...
随机推荐
- [转]windows中断与共享的连接(samba)
问题:window下当成功登录到samba服务器上的共享的目录的时候,若要是再系想登录此服务器上另外一个共享目录时,会弹出登录窗口. 但是不管输入的用户名和密码对错都会提示. “不允许一个用户使用一个 ...
- Android自动化之Monkey测试(二)
本文主要从以下方面进行分享. 一.查看应用包名二.Monkey启动三.Monkey停止四.Monkey命令五.日志分析 一.查看应用包名 大多数时候,我们都是对特定的应用进行monkey测试,因此需要 ...
- 2019新版UI设计面试题汇总(附答案)
问题一.Android手机的常用设计尺寸有_________.怎么适配ios和安卓. 答案:安卓320 X 480是常规模拟器.但现在的开发都是用360x640做一倍率.480 X 800(1.5倍率 ...
- c语言01次作业--分支,顺序结构
C语言--第01次作业 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本章学习让我体会良多.首先,不得不承认自己是一个非常马虎的人.常见的问题就是输出格式上常因为没有与题目要 ...
- 安装nodeJs静态服务器(NodeJs Express MVC 框架)
安装 NodeJs Express MVC 框架 新建项目文件夹 打开cmd 执行以下操作: 一.使用Express框架 1)安装express3 $: npm install -g ex ...
- PackageManagerService 学习记录 基于7.1.1源码
参考: http://blog.csdn.net/innost/article/details/47253179 http://blog.csdn.net/gaugamela/article/deta ...
- Dom4j 封装DOM和SAX 的方法
Dom4j 封装DOM的解析XML文件的方法: List<Book> bookList=new ArrayList<Book>(); //1.1 建立一个解析器工厂: Docu ...
- IDEA的相关使用-----快捷键
转:https://blog.csdn.net/qq_35091777/article/details/80988165 IntelliJ Idea 常用快捷键列表 Alt+回车 导入包,自动修正Ct ...
- python删除文件和文件夹
python中删除文件:os.remove(path) path为文件的路径 import os os.remove(path) python中删除文件夹:shutil.rmtree(path) pa ...
- REdis命令处理流程处理分析
分析版本:REdis-5.0.4. REdis命令处理流程可分解成三个独立的流程(不包括复制和持久化): 1) 接受连接请求流程: 2) 接收请求数据和处理请求流程,在这个过程并不会发送处理结果给Cl ...