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

  • 相关阅读:
    pytest文档19-pytest分布式执行(pytest-xdist)
    pytest文档18-配置文件pytest.ini
    pytest文档17-fixture之autouse=True
    pytest文档16-用例a失败,跳过测试用例b和c并标记失败xfail
    pytest文档15-使用自定义标记mark
    pytest文档14-函数传参和fixture传参数request
    pytest文档12-skip跳过用例
    pytest文档11-assert断言
    创建express项目
    docker安装脚本
  • 原文地址:https://www.cnblogs.com/ssjifm/p/7650084.html
Copyright © 2011-2022 走看看