Mybatis延迟加载以及缓存机制

目录

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 ,对象实现序列化 , 缓存是根据映射文件的命名空间分区的。如果对缓存数据执行增删改操作,缓存也会删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值