MyBatis中关于session以及cache的管理

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>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容