首页 > 代码库 > Mybatis中的一级缓存和二级缓存

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

1、概述

mybatis提供查询缓存主要是为了减轻了数据库的压力,提高了系统的性能。

缓存分为一级缓存和二级缓存,他们之间的关系和区别如下:

技术分享

一级缓存是sqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(hashmap)对象缓存数据。不同的sqlSession之间的数据缓存区域是不互相影响的。

二级缓存是mapper级别的缓存。多个sqlSession去操作同一个mapper中的sql语句,多个sqlSession共享同一个Mapper的二级缓存数据。

2、一级缓存

2.1一级缓存的工作原理

技术分享

技术分享

mybatis中默认一级缓存是开启的不需要配置。

3、二级缓存

3.二级缓存的原理

技术分享

技术分享

3.2二级缓存的配置

技术分享

技术分享

3.3调用POJO类实现序列化接口。

技术分享

3.4禁用二级缓存

技术分享

3.5刷新缓存

技术分享

4、Mybatis整合ehcache

echache是一个分布式的缓存框架。

4.1分布式缓存

为了提高系统的并发性、性能,采用了分布式

当客户端向服务器发送数据请求时,mybatis无法实现多个多个服务器之间缓存数据的同步,因此需要引入分布式缓存(redis、memcached、ehcache)对缓存数据进行集中管理.

4.2整合ehcahe

4.2.1加入ehcache包

技术分享

4.2.2mapper中的配置

技术分享

4.2.3加入ehcache.xml配置文件

在classpath下加入ehcache.xml文件

技术分享

4.3二级缓存的应用场景

技术分享

4.4局限性

技术分享

 

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