美文网首页
MyBatis中关于session以及cache的管理

MyBatis中关于session以及cache的管理

作者: 代码之尖 | 来源:发表于2019-02-21 09:29 被阅读0次

mybatis自身缓存的弊

由于mybatis不是一个专门做缓存处理,现在有一个十分明显的弊端就是,一般我们的网页就是分布式的发布,也就是最少使用两个服务器,如果使用两个服务器mybatis的缓存技术就无法在两个服务器通用就是,也就是两个服务器无法达到数据通用,比如我在一个服务器存储了我的信息,但是我转跳到另一个服务器那使用mybatis数据就是需要从新加载,这里就是一个非常大的问题。还有就是mybatis无法实现细粒度的缓存管理,当你查询大量数据的时候而且将数据存储到mybatis二级缓存中的时候,但是一旦队一个数据操作增加,删除,修改,这里二级缓存就全部清空,而mybatis无法实现对这里单个信息的修改,这里可以使用三级缓存,三级缓存需要自己实现。

mybatis与缓存框架整合

缓存框架这里使用ehcache作为例子,ehcache就是一个分布式框架。

mapper文件配置

    <!-- 开启本mapper(namespace)的二级缓存

      type:指定cache接口的实现类型,mybatis默认的是PerpetualCache

      如果要和ehcache整合只需要配置type为ehacache的实现类即可

      -->

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

这里只需要配置cache的type就可以,这样就可以将缓存数据交给ehcache管理。

ehcache配置文件

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"

  updateCheck="false">

<!--diskStore:缓存数据持久化的目录 地址  -->

<diskStore path="c:\temp\lhd"/>

<defaultCache

maxElementsInMemory="1000"

maxElementsOnDisk="10000000"

eternal="false"

overflowToDisk="false"

diskPersistent="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU">

</defaultCache>

相关文章

网友评论

      本文标题:MyBatis中关于session以及cache的管理

      本文链接:https://www.haomeiwen.com/subject/pmilyqtx.html