我是靠谱客的博主 笨笨金毛,最近开发中收集的这篇文章主要介绍Mybatis延迟加载以及缓存机制1.延迟加载的概述2.延迟加载的实现总结3.缓存机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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>

全局延迟加载:使用数据的时候才去做数据库的查询

总结

  1. 局部延迟加载:配置简单、针对性较强  在加载的时候会多查询数据
  2. 全局延迟加载:整个项目都影响,全局起作用,使用数据的时候,用到那个数据就去查询哪一个。

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.缓存机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部