mybatis 二级缓存

一、mybatis 二级缓存

1、mybatis 的一级缓存是SqlSession。
2、mybatis 的二级缓存是基于同一命名空间(namespace) mapper。

3、mybatis 默认二级缓存未开启、内置是支持二级缓存的。但是由于本身是数据库管理组件、所以缓存并不好用、所以还是要用第三方的缓存机制。典型的:ehcache 。

二、二级缓存的常见算法

* LRU(Least Recently Used):这种算法是在每个对象中维护一个访问的时间变量,每次访问后,时间都会更新,当新的对象需要存放到缓存时,替换那个按时间排序最后的对象。
* LFU(Least Frequently Used):这种算法是每个对象记录了对象访问的次数(即命中率),当新的对象需要存放到缓存时,替换那个访问次数最少的对象。

* FIFO(First In First Out):这种算法是将缓存中的对象存放成一个数组,当新的对象需要存放到内存中是,替换最先存放到缓存的对象。

三、mybatis 中开启二级缓存

1、使用mybatis自带的二级缓存

    1).对象要实现 Serializable 接口
    2).在mapper.xml映射文件中添加

    <!-- 开启缓存 -->
    <cache/>

    3).在mybatis-config.xml中添加

    <!-- 开启二级缓存 -->

    <setting name="cacheEnabled" value="true"/>

2、使用第三方缓存(集成ehcache)

    1). 导入jar包

    * mybatis-ehcache-1.1.0.jar
    * ehcache-2.10.3.jar
    * slf4j-api-1.7.7.jar

    2).生成ehcache.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache>
<!-- 配置文件缓存溢出后存储位置 -->
<diskStore path="c:/ehcache"></diskStore>
<!--
    maxElementsInMemory : 缓存的最多个数
    eternal : 对象永久有效、一旦设置为true、那么timeout就无效
    timeToIdleSeconds : 设置对象失效前空闲的最大时间、当设置eternal="false"、才能起效
    timeToliveSeconds : 设置对象失效前可以存活多少秒、设置0、表示永久有效
    overflowToDisk : 溢出时写入硬盘
-->
<defaultCache maxElementsInMemory="100000" eternal="false" 
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"/>

    </ehcache>

    3).在mybatis-config.xml中开启二级缓存

    4).在mapper文件中指定cache类型为ehcache

    <!-- 开启二级缓存 -->
    <cache type="org.mybatis.caches.ehcache.EhcacheCache" ></cache>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值