一级缓存
概述:
同一个sqlSession对象共享,其作用域是sqlsession级别的。使用sqlSession对象进行查询,mybatis会把查询的结果存入缓存当中,当再次执行桐乡的操作时,直接从缓存中获取。
缓存失效情况
- 一级缓存在执行commit,close,增删改等操作时,就会清空当前的一级缓存;
- 当对SqlSession执行更新操作(update、delete、insert)时会清空其自身的一级缓存,若再执行commit会清空二级缓存。
二级缓存
概述
不同的sqlSession对象共享,其作用域是mapper的同一个namespace(方法)。不同的sqlSession对象执行相同的namespace的SQL语句,第一个sqlSession对象执行完成后会将结果存入缓存中,第二个sqlSession对象则直接从缓存中获取。
缓存失效情况
- 二级缓存有过期时间,默认1小时。当缓存失效超过1小时,则会清空。
注: 清空缓存为了让缓存中存储的是最新的数据,避免脏读。
参考原博客文章地址http://t.csdn.cn/YFVKF