天天看点

mybatis学习教程中级(十)mybatis和ehcache缓存框架整合(重点) 1、前言 2、配置ehcache 2、二级缓存应用场景

前面讲解了mybatis的一级、二级缓存。一级然并卵(spring整合后),二级还是有用的。我们现在来看看用ehcache来维护管理二级缓存。不要问我为什么,因为都这么用!!!java是框架语言,人家给你买个了车车,你硬是要自己写个赛跑的车,你认为呢(精神可嘉)??

我们要先有个态度,前面我们已经有了mybatis的缓存的设置,知道其实质就是用map把数据存起来,这TM就是缓存。所以这些第三方框架也就是做了同样的事情,因为他们更专业。

2.1配置ehcache.xml

把文件放置到resource下面

2.2 配置具体的mapper

到具体的mapper.xml,就这样简单,就这么任性。我加入的是userMapper.xml。

如果你希望你本地mapper与全局的sqlconfig不一样的的时候,你已经可以设置缓存

2.3 测试二级缓存

依旧用以前测试 ,开启两个sqlsession

测试二级缓存结果:看到0.5了吧,亲爱的小伙伴!!!

mybatis学习教程中级(十)mybatis和ehcache缓存框架整合(重点) 1、前言 2、配置ehcache 2、二级缓存应用场景

       name:缓存名称。

       maxElementsInMemory:缓存最大个数。

       eternal:对象是否永久有效,一但设置了,timeout将不起作用。

       timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。

       timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。

       overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。

       diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。

       maxElementsOnDisk:硬盘最大缓存个数。

       diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.

       diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。

       memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。

       clearOnFlush:内存数量最大时是否清除。

  适用性:对查询频率高,变化频率低的数据建议使用二级缓存。例如我们的账单信息查询

局限性:mybatis二级缓存对细粒度的数据级别的缓存实现不好,例如我们的商品信息,广告信息,实时在更新。而二级缓存是针对mapper的,如果order里面更新 

  了,那么里面关于order的缓存就清空了哦。