mybatis缓存

mybatis的缓存问题

一、缓存的优缺点

1.优点:减少数据库的读操作,降低数据库压力,加快响应速度
2.缺点:可能造成数据不一致问题,增加成本

二、mybatis的一级缓存

2.1.1一级缓存的特点

1.一级缓存是默认开启的

2.一级缓存默认是SqlSession级别的

2.1.2 一级缓存失效方式
1. 使用sqlSession.clearCache()刷新缓存
2. 关闭SqlSession之后重新打开
3. SqlSession执行增删改之后会清空缓存

三、二级缓存

3.1.1 二级缓存的特点

1.二级缓存是需要手动开启的

2.二级缓存是SqlSessionFactory级别的

3.1.2 二级缓存的使用

1.首先需要在mybatis-config.xml配置文件中开启二级缓存

<settings>
    <setting name="cacheEnable" value="true"></setting>
</settings>

2.在mapper映射文件中添加标签

<mapper>
	<cache/>
</mapper>

<!--开启成功的标志是-->
Cache Hit Ratio [com.im.mapper.UserMapper]: 0.0
<cache/>标签中属性的介绍:
<cache
    eviction="FIFO" 
    flushInterval="60000" 
    size="512" 
    readOnly="true"/>
eviction: 缓存的回收策略
—>LRU  – 最近最少使用的:移除最长时间不被使用的对象
—>FIFO – 先进先出: 按对象进入缓存的顺序来移除它们
—>SOFT – 软引用: 移除基于垃圾回收器状态和软引用规则的对象 
—>WEAK – 弱引用: 更积极地移除基于垃圾收集器状态和弱引用规则的对象

flushInterval: 刷新间隔,默认不刷新,可以设置任意的正整数,毫秒数

size: 引用数目->可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的可用内存资源数目,默认值是1024。

readOnly: 是否只读默认是false->只读的缓存会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(映射数据库的实体类必须实现序列化) 。这会慢一些,但是安全,因此默认是 false

四、集成第三方cache缓存

使用该缓存的步骤
  • 添加依赖

    ehcache-2.10.4.jar
    mybatis-ehcache-1.0.0.jar
    
  • 添加ehcache产品配置文件ehcache.xml并且配置

    在SQL map 文件中配置<cache/>标签
    
     <cache type="org.mybatis.caches.ehcache.EhcacheCache">
     	<!-- 缓存创建以后,最后一次访问缓存,间隔多久缓存失效(单位s) -->
     	<property name="timeToIdleSeconds" value="3600"/>
     	<!-- 缓存创建日期起到失效时的时间间隔(单位s) -->
     	<property name="timeToLiveSeconds" value="3600"/>
     	<!-- 堆内存中缓存对象数(0:没有限制) -->
     	<property name="maxEntriesLocalHeap" value="1000"/>
     	<!-- 磁盘中的对象数,默认为0不限制 -->
     	<property name="maxEntriesLocalDisk" value="1000000"/>
     	<!-- 内存存储与释放策略(FIFO:先进先出,LFU:一直以来最少被使用的,LRU:最近最少使用的) -->
     	<property name="memoryStoreEvictionPolicy" value="LRU"/>
     </cache>
    

RU:最近最少使用的) -->




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值