• 应用场景:

    • 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次的硬盘操作。
  • 二级缓存使用场景:频繁发生查询,查询条件相同,但是增删改操作很少的表。

最新文章

  1. java类初始化顺序
  2. 1Z0-053 争议题目解析346
  3. 跟visual studio 集成的git插件
  4. ORACLE查出表所有的触发器及触发器详细信息
  5. DSP using MATLAB 随书示例Example2.8
  6. 把Go程序变小的办法
  7. R与数据分析旧笔记(二)随机抽样的一个综合例子
  8. mongodb终端指令
  9. 这个demo是为解决IQKeyboardManager和Masonry同时使用时,导航栏上移和make.right失效的问题
  10. 设置SQL Server 2005数据库使之可以远程连接
  11. Cousera课程Learning How to Learn学习报告
  12. bootstrap 表单+按钮+对话框
  13. JavaScript八张思维导图—编程风格
  14. (一)走进Metasploit渗透测试框架
  15. 在 .NET Core 下的 Swagger UI 自定义操作
  16. 使用memcache对wordpress优化,提速
  17. 【BZOJ-4212】神牛的养成计划 Trie树 + 可持久化Trie树
  18. 0121 集合类 ArrayList 的练习
  19. spring-security权限控制详解
  20. Part1-HttpClient快速入门案例

热门文章

  1. 关于Android中物理按键不响应的可能的一个问题。
  2. 比 git log 更强大的 git reflog
  3. showModalDialog参数问题
  4. HDU 1015 Safecracker(第一次用了搜索去遍历超时,第二次用for循环能够了,思路一样的)
  5. oracle 10g 实例用localhost无法访问的处理
  6. set 去重 会 破坏 原有list 的元素相对位置
  7. SAP 常用增强记录文档
  8. HttpServlet容器响应Web客户流程
  9. beego5---gosqlite安装
  10. Jackson 框架的高阶应用