• 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
  • 相关阅读:
    母爱——值得你用一生去回报
    cmd命令介绍
    对即将步入软件行业的师弟师妹们的忠告
    推荐4本c语言宝书
    不用判断语句如if,?:等来实现比较2个数
    javascript 浏览器不同的一个差异
    更新数据的经典代码
    允许 ASP.NET 服务器控件在 Page 中发出客户端脚本块的方法Page.RegisterClientScriptBlock 方法 [C#]
    使用多个表进行查询
    根据按钮的不同的CommandArgument处理每个按钮的单击事件的代码
  • 原文地址:https://www.cnblogs.com/haw2106/p/6952005.html
Copyright © 2020-2023  润新知