zoukankan      html  css  js  c++  java
  • MyBatis缓存机制-二级缓存

      MyBatis二级缓存是基于namespace级别的缓存.

    1.MyBatis的缓存机制整体设计以及二级缓存的工作模式

      

       如上图所示,当开一个会话时,一个SqlSession对象会使用一个Executor对象来完成会话操作,MyBatis的二级缓存机制的关键就是对这个Executor对象做文章。如果用户配置了"cacheEnabled=true",那么MyBatis在为SqlSession对象创建Executor对象时,会对Executor对象加上一个装饰者:CachingExecutor,这时SqlSession使用CachingExecutor对象来完成操作请求。CachingExecutor对于查询请求,会先判断该查询请求在Application级别的二级缓存中是否有缓存结果,如果有查询结果,则直接返回缓存结果;如果缓存中没有,再交给真正的Executor对象来完成查询操作,之后CachingExecutor会将真正Executor返回的查询结果放置到缓存中,然后在返回给用户。

    2.二级缓存实现的选择

      1.MyBatis自身提供的缓存实现 

    <cache  type="org.apache.ibatis.cache.impl.PerpetualCache"> </cache>
    

      2.用户自定义的cache接口

      3.和第三方内存还存库的集成

    3.二级缓存自身实现和第三方集成的差别

      自身实现只可作用与数据库,而第三方集成的缓存扩展性更强.

    4.ehcache的优点

      1.它采用了分布式缓存,,兼具灵活性和扩展性.

      2.标准分布式搜索使用了流式查询接口的方式.

      3.多种配置方式,自动资源控制

      详细信息:http://raychase.iteye.com/blog/1545906

    5.MaBatis配置ehcache

      (1).导包

        导入:ehcache-core-2.6.5.jar 和mybatis-ehcache-1.0.2.jar 两个包

      (2).配置文件

        ehcache-failsafe.xml

        

      (3).在mapper映射文件cache标签中设置type为Ehcashe的实现类为

        

      (4).测试二级缓存

     

    参考博客:http://blog.csdn.net/luanlouis/article/details/41408341

         http://baijiahao.baidu.com/s?id=1575518563721435&wfr=spider&for=pc

  • 相关阅读:
    Cxx11 stdchrono库详解
    Oracle中文乱码
    Javascript 编程小技巧总结(部分内容借鉴他人)
    从文档流角度理解浏览器页面渲染引擎对元素定位的解析
    JS重点特性——闭包详解
    用一段JS代码来比较各浏览器的极限内存与运算速度
    前端开发人员需知——浏览器详解
    Js变量定义——fn里 var与不var的区别
    Js文字特效—文字段逐个变色循环
    html5 canvas画图之图形随拖动而复制(有操作指示)
  • 原文地址:https://www.cnblogs.com/ssjifm/p/7650084.html
Copyright © 2011-2022 走看看