Mybatis中 延迟加载 和 缓存使用方式

延迟加载

什么是延迟加载?什么是立即加载?

	延迟加载:等数据需要使用的时候加载(按需加载),又称为懒加载
	立即加载:不管你用不用,写了我就执行

它们两个的使用场景

	一对多、多对多:使用延迟加载
	多对一、一对一:使用立即加载、

开启延迟加载的方式,在setties配置lazyLoadingEnabled为true

    <settings>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

缓存

什么是缓存?为什么使用缓存?什么样的数据适合使用缓存、什么样的数据不适合使用缓存?

缓存:可以理解为存储在内存中的临时数据
为什么使用:主要是减少对数据库的交互次数,提高执行效率及降低服务器压力
适合做缓存的数据:经常查询且不经常改变的数据,最重要的是,数据的正确与否对最终结果影响不大的数据。
不适合做缓存的数据:和以上正好相反。

mybatis中的一级缓存和二级缓存

一级缓存:
		* mybatis中的一级缓存存在于SqlSession对象中
		* 当我们执行查询后,获取结果的同时会存入SqlSession为我们提供的一块区域中,该区域结构是一个map,当我们再次查询同样的数据,回先从该区域查询,有的话直接拿出来用,没有再去数据库查询,并存入
		* 当SqlSession对象销毁时,或者执行增删改、事务提交、关闭等操作都会使该对象的一级缓存就会失效
二级缓存
		* mybatis中的二级缓存存在于SqlSessionFactory对象中
		* 所以通过一个factory创建的sqlSession对象,共享二级缓存
使用步骤:
	1. 在核心配置文件中,开启支持二级缓存(默认时支持的) ,可以添加<setting name="cacheEnabled" value="true" />显示声明
	2. 在要开启的映射文件中添加<cache/>标签
	3. 在具体的方法标签中添加 useCache="true"开启支持

笔记来自:狂神说Java

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页