-
Mybatis缓存
一级缓存
- 一级缓存为SqlSession缓存,二级缓存为SqlSessionFactory缓存,缓存仅作用于同一namespace
- SqlSession缓存可以刷新(清空),<select>标签配置中使用flushCache="true"属性
- 缓存是相互隔离的,不同SqlSession对象之间不共享缓存
- 数据发生变动后会清除缓存,在数据变动频繁的地方不适宜使用缓存
- Mybatis会通过算法生成键,与查询结果数据一起放入Map中,读缓存就是读取Map
二级缓存
- 一级缓存为SqlSession缓存,二级缓存为SqlSessionFactory缓存,缓存仅作用于同一namespace
- SqlSessionFactory有两种开关
- 总开关在mybatis-config.xml中<setting name="cacheEnabled" value="true"/>默认打开
- 分开关在对应的namespace中,默认关闭,使用<cache/>标签即可打开,其信徒众多
- type:缓存的实现"类型",默认PERPETUAL,org.apache.ibatis.cache.impl.PerpetualCache,可扩展或替换
- eviction:"撤退"的方式,LRU(最近最少使用,默认)、FIFO(先进先出)、SOFT(gc软引用)、WEAK(gc弱引用)
- flushInterval:刷新间隔,默认不设置,只有在数据变动时自己刷新;当设置后则按时间刷新
- size:缓存数量,默认1024
- readOnly:默认false,false表示可写,会反序列化复制一份对象进行读写,较为安全
- blocking:阻塞,默认false,不阻塞的方式在并发查询时可能会穿透缓存查询数据库,true会在查询前加锁保证若命中就不查询
-
相关阅读:
在网易和百度实习之后,我才明白了这些事
从Java小白到收获BAT等offer,分享我这两年的经验和感悟
曾经做的一个JS小游戏——《Battle City》
适配器(Adapter)模式
装饰器(Decorator)模式
Java IO
JDBC中驱动加载的过程分析
从PipedInputStream/PipedOutputStream谈起
从InputStream到ByteArrayInputStream
JDK中的动态代理
-
原文地址:https://www.cnblogs.com/duduchong/p/13304099.html
Copyright © 2020-2023
润新知