深层剖析java应用开发中MyBayis缓存

网友投稿 263 2022-12-08

深层剖析java应用开发中MyBayis缓存

目录什么是 MyBatis 缓存MyBatis 缓存分http://类1、⼀级缓存:SqlSession 级别,默认开启,并且不能关闭。(默认开启)2、二级缓存:Mapper 级别,默认关闭,可以开启。二级缓存如何使用1、MyBatis 自带的二级缓存1.1config.xml 配置开启⼆级缓存1.2Mapper.xml 中配置⼆级缓存1.3实体类实现序列化接口2、ehcache 二级缓存(第三方)2.1pom.xml 添加相关依赖2.2添加 ehcache.xml2.3config.xml 配置开启⼆级缓存2.4 Mapper.xml 中配置⼆级缓存

什么是 MyBatis 缓存

使⽤缓存可以减少 java 应⽤与数据库的交互次数,从而提升程序的运行效率。⽐如查询出 id = 1 的对象,第⼀次查询出之后会自动将该对象保存到缓存中,当下⼀次查询时,直接从缓存中取出对象即可, 无需再次访问数据库。

MyBatis 缓存分类

1、⼀级缓存:SqlSession 级别,默认开启,并且不能关闭。(默认开启)

操作数据库时需要创建 SqlSession 对象,在对象中有⼀个 HashMap ⽤于存储缓存数据,不同的 SqlSession 之间缓存数据区域是互不影响的。 ⼀级缓存的作用域是 SqlSession 范围的,当在同⼀个 SqlSession 中执⾏两次相同的 SQL 语句事,第⼀ 次执行完毕会将结果保存到缓存中,第⼆次查询时直接从缓存中获取。 需要注意的是,如果 SqlSession 执行了 DML 操作(insert、update、delete),MyBatis 必须将缓存清空以保证数据的准确性。

2、二级缓存:Mapper 级别,默认关闭,可以开启。

使⽤⼆级缓存时,多个 SqlSession 使⽤同⼀个 Mapper 的 SQL 语句操作数据库,得到的数据会存在⼆ 级缓存区,同样是使⽤ HashMap 进⾏数据存储,相⽐较于⼀级缓存,⼆级缓存的范围更⼤,多个 SqlSession 可以共⽤⼆级缓存,⼆级缓存是跨 SqlSession 的。 ⼆级缓存是多个 SqlSession 共享的,其作⽤域是 Mapper 的同⼀个 namespace,不同的 SqlSession 两次执⾏相同的 namespace 下的 SQL 语句,参数也相等,则第⼀次执⾏成功之后会将数据保存到⼆级 缓存中,第⼆次可直接从⼆级缓存中取出数据。

二级缓存如何使用

1、MyBatis 自带的二级缓存

1.1config.xml 配置开启⼆级缓存

settings>

1.2Mapper.xml 中配置⼆级缓存

1.3实体类实现序列化接口

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Account implements Serializable {

private long id;

private String username;

private String password;

private int age;

}

2、ehcache 二级缓存(第三方)

2.1pom.xml 添加相关依赖

org.mybatis

mybatis-ehcache

1.0.0

net.sf.ehcache

ehcache-core

2.4.3

2.2添加 ehcache.xml

xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

maxElementsInMemory="1000"

maxElementsOnDisk="10000000"

eternal="false"

overflowToDisk="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU">

xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

maxElementsInMemory="1000"

maxElementsOnDisk="10000000"

eternal="false"

overflowToDisk="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU">

maxElementsInMemory="1000"

maxElementsOnDisk="10000000"

eternal="false"

overflowToDisk="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU">

2.3config.xml 配置开启⼆级缓存

2.4 Mapper.xml 中配置⼆级缓存

以上就是深层剖析java开发中MyBayis缓存的详细内容,更多关于Mybatis缓存剖析的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java工程师进阶之MyBatis延迟加载的使用
下一篇:关于MyBatis plus条件构造器的逐条详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~