(六)Mybatis总结之延迟加载
- 应用场景:
- i.假如一个用户他有N个订单(N>=1000),那么如果一次性加载的话,一个用户对象的订单集合OrderList里面就会有1000多个Order的对象。计算:一个订单对象里面数据有多大
- ii.从优化考虑,我们会使用延时加载去降低内存的占用,即先查询用户,不查询订单,当你通过 用户.getOrderList()的时候,再查询订单集合
- 总而言之一句话:查询的时候,只查询当前对象,不查询关联对象,即为延时加载。但是有一个问题,如果你是延时加载,那么和查询两次没区别,那我为什么不用查询两次?
接下来内容请观看大佬的博客: https://www.cnblogs.com/jack1995/p/7260722.html
一级缓存和二级缓存
请移步到 https://www.cnblogs.com/happyflyingpig/p/7739749.html
- 什么是缓存:缓冲内存,一般来说,我们执行查询的时候,用的是SqlSession的对象,这个就是Mybatis的一级缓存。
- 数据一致性:缓存中的数据必须和数据库中的数据高度一致。
- 二级缓存:不太推荐使用,因为使用二级缓存必须将pojo类实现序列化接口,而实现序列化接口就是要将这个pojo类的对象保存到硬盘中。
- 问题:我sql也是从硬盘查,我使用二级缓存也是从硬盘获取,那它们之间有什么不同呢?
- 二级缓存相较于数据库查询的优势:如果一次查询的结果是放到二级缓存里面的话(本地硬盘),那么第二次执行同样的查询,数据将会直接从二级缓存(硬盘获取),不再会执行查询。
- 二级缓存相较于数据库查询的劣势:一旦发生增、删、改操作,就会发生数据不一致的情况(数据库与缓存数据对不上)。所以发生以上操作的时候,二级缓存就会继续清空,而发生继续清空的情况下,会产生+1次的硬盘操作。
- 二级缓存使用场景:频繁发生查询,查询条件相同,但是增删改操作很少的表。
(六)Mybatis总结之延迟加载的更多相关文章
- mybatis探究之延迟加载和缓存
mybatis探究之延迟加载和缓存 一.什么是延迟加载 1.延迟加载的概念 在mybatis进行多表查询时,并非所有的查询都需要立即进行.例如在查询带有账户信息的用户信息时,我们们并不需要总是在加载用 ...
- Mybatis中的延迟加载的使用方法
Mybatis中的延迟加载的使用方法 在Mybatis中查询订单,然后带出商品信息和快递信息的配置方法 orderMapper.xml配置如下 <?xml version="1.0&q ...
- (转)MyBatis框架的学习(六)——MyBatis整合Spring
http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...
- Mybatis 一对多延迟加载,并且子查询中与主表字段不对应 (19)
Mybatis 一对多延迟加载,并且子查询中与主表字段不对应应用说明. 实现一对多关联(懒加载),一个教研组对应多个教师,既:教师的教研编号与教研组的教研编号关联,并且教师关联教研组外键与教研组编号 ...
- 【Mybatis架构】 延迟加载
在上一篇博客中,我们提到过有关于Mybatis输出映射中resultMap能够实现延迟加载的事,然而真的是所有的resultMap都能实现延迟加载还是咋地啊?现在我们就来对那一句话做一下阐述和实例说明 ...
- mybatis中的延迟加载
一.延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 延迟加载:先 ...
- 六 mybatis高级映射(一对一,一对多,多对多)
1 订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.
- Spring+SpringMVC+MyBatis深入学习及搭建(六)——MyBatis关联查询
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6923464.html 前面有将到:Spring+SpringMVC+MyBatis深入学习及搭建(五)--动 ...
- mybatis教程5(延迟加载和缓存)
关联关系 在关系型数据库中,表与表之间很少是独立与其他表没关系的.所以在实际开发过程中我们会碰到很多复杂的关联关系.在此我们来分析下载mybatis中怎么处理这些关系 1对1关系 我们有一张员工表(T ...
随机推荐
- sql server 系统常用函数:聚合函数 数学函数 字符串函数 日期和时间函数和自定义函数
一.系统函数 1.聚合函数 聚合函数常用于GROUP BY子句,在SQL Server 2008提供的所有聚合函数中,除了COUNT函数以外,聚合函数都会忽略空值AVG.COUNT.COUNT_BIG ...
- HDU OJ u Calculate e
这是一道简单的数学计算问题 主义好输出格式就好 #include<stdio.h> int main() { printf("n e\n- -----------\n&quo ...
- 记一次Tomcat无法正常启动的查错与解决之路
使用LombozEclipse运行某Web应用,结果总是404. 换另一个Eclipse运行,还是404. 换Tomcat到更高版本,还是404. 直接启动Tomcat,闪退. 用重定向拦截输出,可惜 ...
- linux中用anaconda使用不同版本python
1.使用命令conda create --name python36 python=3.6 #你想使用哪个版本就下载哪个版本,--name后面跟的是该虚拟环境的名称 2.需要使用python3.6时 ...
- 问题:IIS部署 MVC项目 (autofac) 错误解决
http://www.cnblogs.com/yelaiju/p/3375168.html Could not load file or assembly 'System.Core, Version= ...
- Genymotion设置网络桥接
1,打开Genymotion,找到对应的模拟器,点击“设置”按钮 2,在网络选项中选择桥接 Bridge
- mysql 转换编码方式
进入mysql 的安装文件夹找到 “ my.ini” 文件 (mysql配置文件) 一.编辑MySql的配置文件 vim /etc/my.cnf 在 [mysqld] 标签下加上三行 default ...
- adbi命令【转】
本文转载自:https://zmywly8866.github.io/2015/01/24/all-adb-command.html ADB很强大,记住一些ADB命令有助于提高工作效率. 获取序列 ...
- NSArray, NSSet, NSDictionary
一.Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合(集合) NSDic ...
- I.MX6 Android shutdown shell command
/******************************************************************************* * I.MX6 Android shu ...