缓存分类
- 一级缓存
事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存的生命周期结束,在此范围下,缓存的介质是内存
- 二级缓存
进程范围:缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期。进程结束时,缓存结束生命周期。进程范围内的缓存可能会存放大量数据,所以存放的介质可以是内存或磁盘
- 三级缓存
集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式
MyBatis支持1级缓存和2级缓存,在实际开发中,实际上很少使用到MyBatis自带的缓存,大部分情况下,缓存都是使用EHCache,MemoryCache、Redis等等来实现缓存
1.MyBatis中1级缓存是基于SqlSession的
2.二级缓存基于SqlSessionFactory,一级缓存的作用域只是SqlSession,范围比较小,用到的不多。二级缓存是进程级别的缓存,用 的比较普遍,二级缓存mybatis本身没有提供,常用的主要有Ehcache和Redis