MyBatis筆記——EhCache二級緩存


介紹

ehcache是一個分布式緩存框架。

我們系統為了提高系統並發,性能、一般對系統進行分布式部署(集群部署方式)
結構

不使用分布緩存,緩存的數據在各各服務單獨存儲,不方便系統開發。所以要使用分布式緩存對緩存數據進行集中管理。

mybatis無法實現分布式緩存,需要和其它分布式緩存框架進行整合。這里我主要介紹整合EhCache。下面開始實例。


實例

1.導入MyBatis-EhCache整合包

整合包

項目結構如下:
項目結構

2.classpath下添加EhCache配置文件(ehcache.xml)

<ehcache>
    <diskStore path="F:\cache_test" />
    <defaultCache eternal="false" maxElementsInMemory="1000" timeToIdleSeconds="20" timeToLiveSeconds="20" overflowToDisk="true" maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="20" memoryStoreEvictionPolicy="LRU" />
</ehcache>

3.MyBatis配置文件(SqlMapConfig.xml)打開二級緩存

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

4.Mapper配置文件添加cache標簽

    <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

5.緩存結果繼承序列化接口

public class User implements Serializable

測試

測試類如下:

package cn.pwc.test;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.pwc.dao.UserMapper;
import cn.pwc.pojo.User;

public class Test {

    public static void main(String[] args) {
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(Test.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
        SqlSession session = factory.openSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.findById(1);
        System.out.println(user.toString());
        session.commit();
        session.close();
        SqlSession session2 = factory.openSession();
        UserMapper mapper2 = session2.getMapper(UserMapper.class);
        User user2 = mapper2.findById(1);
        System.out.println(user2.toString());
        session2.commit();
        session2.close();
    }

}

測試結果如下:

DEBUG [cn%002epwc%002edao%002e%0055ser%004dapper.data]     net.sf.ehcache.store.disk.Segment     - fault removed 0 from heap
DEBUG [cn%002epwc%002edao%002e%0055ser%004dapper.data]     net.sf.ehcache.store.disk.Segment     - fault added 0 on disk

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM