网站专题BANNER

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

发表日期:2022-01-10 09:29:00 文章编辑:洛壹网络 文章来源:深圳网站建设

一级缓存

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


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


网站建设开发_Mybatis源码 一级缓存的的简单介绍


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


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


网站建设开发_Mybatis源码 一级缓存的的简单介绍


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


网站建设开发_Mybatis源码 一级缓存的的简单介绍



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


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 维护对应关系。


相关内容
网站建设开发:JavaScript正则全面解析

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

JavaScript中什么是“一流函数”

在计算机科学中,如果一种编程语言将函数视为一等公民,那么它就被称为具有一等函数。这意味着该语言支持将函数作为参数传递给其他函数,将它们作为其他函数的值返回,并将它们分配给变量或将它们存储在数据结构中。

认识less以及less和css简单的语句区别

less作为一门CSS扩展语言,也就是说CSS预处理器。(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量、函数、作用域等等。

Less简介以及Less的几种使用方式

Less是一门CSS预处理语言,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS更易维护和扩展。Less可以运行在Node或浏览器端。也可运行在桌面客户端。

Python数据可视化案例:动态更新数据

在开发与数据监测和数据可视化有关的系统时,我们会需要根据最新的数据对图形进行更新。下面的代码模拟了这种情况,单击Start按钮时会更新数据并重新绘制图形使得曲线看上去在移动一样,单击Stop按钮则停止更新数据。

如何查询IP地址,IP地址基本格式以及分类介绍

根据用途和安全性级别的不同,IP地址还可以大致分为两类:公共地址和私有地址。公共地址在Internet中使用,可以在Internet中随意访问。私有地址只能在内部网络中使用,只有通过代理服务器才能与Internet通信。

本地服务器如何查看IP地址及端口

windows服务器查询IP及端口,本地服务器如何查看IP地址及端口,查询端口占用情况

2022年前端工程师必须掌握的4大核心技能

什么才是Web前端开发的必备核心技能呢?简单来讲有4大核心技能 就是:掌握前端三大基础,前端主流框架、服务端开发,以及前端工程化。

我们
定制
咨询
联系
在线咨询
您的浏览器版本太低

请升级您的浏览器: Internet Explorer11 或以下浏览器: Firefox  /  Chrome  /  360极速浏览器