介绍
ehcache是一个分布式缓存框架。
我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)
不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。
mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。这里我主要介绍整合EhCache。下面开始实例。
实例
1.导入MyBatis-EhCache整合包
项目结构如下:
2.classpath下添加EhCache配置文件(ehcache.xml)
3.MyBatis配置文件(SqlMapConfig.xml)打开二级缓存
4.Mapper配置文件添加cache标签
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