介绍

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

转载于:https://www.cnblogs.com/haw2106/p/6952005.html

MyBatis笔记——EhCache二级缓存相关推荐

  1. MyBatis学习系列——二级缓存

    [MyBatis学习13]MyBatis中的二级缓存 发表于2016/6/16 7:26:19  4922人阅读 分类: ● 框架技术 --[MyBatis] 1. 二级缓存的原理 前面介绍了,myb ...

  2. 【MyBatis学习8】MyBatis中的二级缓存

    1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...

  3. 【MyBatis学习13】MyBatis中的二级缓存

    1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...

  4. MyBatis中的二级缓存

    MyBatis中的二级缓存 1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二 ...

  5. Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案!

    Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案! 参考文章: (1)Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案! (2)https://www.cnblogs.co ...

  6. mybatis ehcache二级缓存命中率为0的原因,以及一级缓存与二级缓存之间的顺序

    一级缓存针对SqlSession进行缓存 二级缓存针对mapper进行缓存,不管是不是相同的session,只要mapper的namespace相同,就会共享缓存 那么在同一个session下,执行同 ...

  7. Mybatis3.4.x技术内幕(二十二):Mybatis一级、二级缓存原理分析

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis的一级缓存,指的是SqlSession级别的缓存,默认开启:Mybatis的二级缓存,指的是SqlSession ...

  8. mybatis学习(46):二级缓存被刷新的情况

    目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; im ...

  9. mybatis学习(44):二级缓存1

    目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; im ...

最新文章

  1. 最新!这所顶尖大学录取线全国第三!毕业生深造率超九成!
  2. Unix高级环境编程 学习小结(一)
  3. 隐马尔科夫模型 概念(上)
  4. 数组的定义格式三_省略的静态初始化
  5. 记一次某APK的恶意WIFI攻击
  6. 使用PowerShell和T-SQL在多服务器环境中规划SQL Server备份和还原策略
  7. 从在浏览器中输入URL到页面渲染出来的完整过程是怎样的?
  8. Spring Cloud 微服务的那点事
  9. Google安全团队对Android安全的认识
  10. 翻译:MySQL Got an Error Reading Communication Packet Errors
  11. 【北京迅为】i.MX6ULL终结者RS232驱动测试RS485测试
  12. RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统
  13. 上传文件,路径为C:\fakepath\的问题(待跟进)
  14. 区块链专利申请量断崖式下降:阿里腾讯跌出十强 网心逆市晋身前四
  15. 中华石杉Java面试突击第一季笔记二(分布式搜索引擎)
  16. 基本农田卫星地图查询_谷歌地图打不开?试试这个替代网站,街景功能很好用!...
  17. matlab sym是什么意思,SYM是什么意思 sym是什么意思
  18. 文科生学大数据分析吃力吗
  19. Hadoop3.2.1 RPC通讯 一锅端
  20. oraoledb.oracle.11,Oracle11g链接提示未“在本地计算机注册“OraOLEDB.Oracle”解决方法...

热门文章

  1. Android:你不知道的 WebView 使用漏洞
  2. 自己动手调试Android源码(超简单)
  3. Android Context getSystemService分析
  4. Xposed源码剖析——hook具体实现
  5. 优秀的API接口设计原则及方法
  6. androidstudio sqlite where 条件_SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
  7. 架空输电线路运行规程_架空输电线路杆塔金具的种类
  8. python网络通信的几种方式_python网络-计算机网络基础(23)
  9. mysql查询条数为零_mysql 查询每个月发布的文章数。月份无数据显示为0。如何写SQL呢...
  10. cc压力测试_斯坦福大学鲍哲南院士AFM综述:教你如何设计压力传感器的微结构...