返回上一页 认识less以及less和css简单的语句区别 技术文献公司资讯 Less简介以及Less的几种使用方式

当前位置:首页 > 观点资讯 > 技术文献 > 详细内容

Mybatis源码 一级缓存的的简单介绍

时间:23-03-10 浏览:236次 + 打印

一级缓存

Mybatis源码 一级缓存的的简单介绍

市面上流行的ORM框架都支持缓存,不管是Hibernate还是Mybatis都支持一级缓存和二级缓存,目的是把数据缓存到JVM内存中,减少和数据库的交互来提高查询速度。同时MyBatis还可以整合三方缓存技术。


Mybatis一级缓默认开启,是SqlSession级别的,也就是说需要同一个SqlSession执行同样的SQL和参数才有可能命中缓存。如:



同一个SqlSession执行同一个SQL,发现控制台日志只执行了一次SQL记录,说明第二次查询是走缓存了。但是要注意的是,当SqlSession执行了delete,update,insert语句后,缓存会被清除。


那么一级缓存在哪儿呢?下面给大家介绍一个类。



Mybatis中提供的缓存都是Cache的实现类,但是真正实现缓存的是PerpetualCache,其中维护了一个Map cache = new HashMap() 结构来缓存数据。其他的缓存类采用了装饰模式对PerpetualCache做增强。比如:LruCache 在PerpetualCache 的基础上增加了最近最少使用的缓存清楚策略,当缓存到达上限时候,删除最近最少使用的缓存 (Least Recently Use)。代码如下




下面对其他的缓存类做一个介绍


PerpetualCache : 基础缓存类

LruCache : LRU 策略的缓存 当缓存到达上限时候,删除最近最少使用的缓存 (Least Recently Use),eviction=“LRU”(默 认)

FifoCache : FIFO 策略的缓存 当缓存到达上限时候,删除最先入队的缓存,配置eviction=“FIFO”

SoftCache WeakCache :带清理策略的缓存 通过 JVM 的软引用和弱引用来实现缓存,当 JVM 内存不足时,会自动清理掉这些缓存,基于 SoftReference 和 WeakReference

SynchronizedCache : 同步缓存 基于 synchronized 关键字实现,解决并发问题

ScheduledCache : 定时调度的缓存,在进行 get/put/remove/getSize 等操作前,判断 缓存时间是否超过了设置的最长缓存时间(默认是 一小时),如果是则清空缓存–即每隔一段时间清 空一次缓存

SerializedCache :支持序列化的缓存 将对象序列化以后存到缓存中,取出时反序列化

TransactionalCache :事务缓存,在二级缓存中使用,可一次存入多个缓存,移除多个缓存 。通过TransactionalCacheManager 中用 Map 维护对应关系。


网站建设公司项目经理

扫二维码与项目经理沟通

我们在微信上24小时期待你的声音
解答:网站优化、网站建设、APP开发、小程序开发

如有侵权需要删除文章请联系我

小宇宙是一家以提供网站建设网站优化APP开发小程序开发、网络营销推广为主的互联网开发公司。以客户需求为导向,客户利益为出发点,结合自身设计及专业建站优势,为客户提供从基础建设到营销推广的一整套解决方案,探索并实现客户商业价值较大化,为所有谋求长远发展的企业贡献全部力量。

Learn more

关于我们 专业网站设计制作

Learn more

服务项目 南京网站建设
获取网站设计、app开发、VI设计报价 微信客服 返回顶部
网站制作
扫二维码与项目经理沟通
×

Let\'s get in touch!,login get more service.

我们将艺术与技术相结合,用创意和设计为客户创造商业价值,创造优秀的产品及服务体验!登陆之后可以获得更多的私人定制服务

sitemap.txt sitemap.xml sitemap.htm 网站设计制作