概述
目录
1.延迟加载的概述
2.延迟加载的实现
2.1 局部加载
2.1 全局的延迟加载
总结
3.缓存机制
3.1一级缓存
3.2二级缓存
1.二级缓存的概述
2.二级缓存的实现
1.延迟加载的概述
延迟加载的使用:嵌套查询。
延迟加载又称懒加载、按需加载。作用是使用数据的时候才去做数据库的查询,从而降低系统的消耗。
当数据量过大时,不建议使用
2.延迟加载的实现
2.1 局部加载
1.导入依赖
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
2.在使用的地方配置延迟加载
fetchType="lazy"
局部延迟加载:当使用到对象的属性的时候,会将下一级查询出来
2.1 全局的延迟加载
在核心配置文件设置
<!--配置全局延迟加载-->
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
全局延迟加载:使用数据的时候才去做数据库的查询
总结
- 局部延迟加载:配置简单、针对性较强 在加载的时候会多查询数据
- 全局延迟加载:整个项目都影响,全局起作用,使用数据的时候,用到那个数据就去查询哪一个。
3.缓存机制
mybatis缓存针对于查询
缓存概念:将每次查询结果放入缓存区中,如果下一次有相同的查询,可以直接读取缓存区中的缓存,无需再次查询。
3.1一级缓存
sqlsession级别的缓存,默认开启的。
一级缓存的数据失效:
1.session关闭
2.执行增删改操作
3.2二级缓存
1.二级缓存的概述
二级缓存是sqlsessionfactory级别的缓存,一般随着项目的启动而创建,随着项目的关闭儿销毁。二级缓存默认关闭,如果要使用,必须将需要缓存的实体类序列化(实现serializable接口),二级缓存按照映射文件的命名空间分区域进行缓存。
2.二级缓存的实现
①在核心配置文件中settings中添加一个缓存开启
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
②在需要开启缓存的映射文件中添加一个<cache/>
③实体类实现序列化接口
缓存中的数据获取是以sql语句为主还是方法为主?
结果:缓存的数据是根据映射文件中的方法来决定是否使用缓存数据。
二级缓存:范围整个sqlSessionFactory ,对象实现序列化 , 缓存是根据映射文件的命名空间分区的。如果对缓存数据执行增删改操作,缓存也会删除。
最后
以上就是笨笨金毛为你收集整理的Mybatis延迟加载以及缓存机制1.延迟加载的概述2.延迟加载的实现总结3.缓存机制的全部内容,希望文章能够帮你解决Mybatis延迟加载以及缓存机制1.延迟加载的概述2.延迟加载的实现总结3.缓存机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复