Mybatis默认使用了一级缓存为数据查询提供效率,其底层数据结构为PerpetualCache。同时MyBatis不止实现了PerpetualCache,还有其他实现提供其他功能,如下:

  可以从UML图上看,除了PerpetualCache是Cache的具体实现,其他它是Cache的装饰器类(其特点是每个类自身有一个Cache接口的属性,即类本身装饰器自身)。

  在Mybatis查询一二级的缓存中有介绍PerpetualCache这个实现类,本文中主要介绍Cache的其他装饰器类。

  按功能分类,缓存装饰器类可以分为以下几类:

    同步装饰器:为缓存增加同步功能,SynchronizedCache;

    日志装饰器:为缓存增加日志功能,LoggingCache;

    清理装饰器:为缓存中的数据增加清理功能,FifoCache,LruCache,WeakCache,SoftCache等;

    阻塞装饰器:为缓存增加阻塞功能,BlockingCache;

    定时清理装饰器:为缓存增加定时刷新功能, ScheduledCache;

    系列化装饰器:为缓存增加序列化功能,SerialzedCache;

    事务装饰器:用于支持事务操作,TransactionalCache。

  这类装饰器缓存是如何组建的呢?在CacheBuilder类源码中可以得到答案:

    

  从上图看,Mybatis默认使用了清理缓存LruCache。

    

    

最新文章

  1. mysql重置密码
  2. js中的浅拷贝和深拷贝
  3. spring.net使用
  4. RVMDK的DEBUG调试-实时数据查看
  5. NPOI的版本查看
  6. iOS Copy 和 MutableCopy的区别 深浅拷贝的区别-供参考
  7. codevs 2451 互不侵犯(状丫dp)
  8. 优质UI的7条准则(一)
  9. Android应用程序更新并下载
  10. Python学习之一:Python2.7与opencv2.4安装配置
  11. 设计模式的征途—15.观察者(Observer)模式
  12. Codeforces 29D Ant on the Tree 树的遍历 dfs序
  13. kafka 心跳和 reblance
  14. day 1:计算机发展史和组成部分
  15. Python从入门到精通之eighth!
  16. jsoncpp
  17. Esxi 6.0虚拟机迁移Linux遇到网络配置错误
  18. 10.翻译:EF基础系列---EF中的持久性
  19. log4j配置文件位置详解
  20. EL表达式获取请求

热门文章

  1. scrollTop、scrollHeight与clientHeight
  2. 展示html/javascript/css------Live-Server服务器
  3. 【C primer plus】初始化链表函数的错误
  4. 《剑指offer》面试题58 - I. 翻转单词顺序
  5. 【小记录】解决链接libcufft_static.a库出现的错误
  6. Cesium入门8 - Configuring the Scene - 配置视窗
  7. VAE变分自编码器
  8. 关于new Date总结及注意事项
  9. Android Native -- Message/Handler/Looper机制(应用篇)
  10. Water 2.5 发布,一站式服务治理平台