Mybatis的缓存机制
缓存的顺序:先查二级缓存再去一级缓存
默认两级缓存
一级缓存:(本地缓存) sqlSession级别的缓存(存在Map中) 与数据库同一次会话期间查到的数据会放在本地缓存中。
以后如果需要获取相同的数据,直接从缓存中拿,没必要再次查询数据库。
缓存失效:1..sqlSession不同
2.sqlSession相同,查询条件不同
3.sqlSession相同,两次查询之间执行了增删改操作
4.sqlSession相同,手动清除了一级缓存
二级缓存:(全局缓存)基于namespace级别的缓存,一个namespace对应一个二级缓存
工作机制:<cache></cache>
1.一个会话,查询一条数据,这个数据就会被放在当前的一级缓存中;
2.如果会话关闭,一级缓存中的数据会被保存到二级缓存中,新的会话查询信息,就可以参照二级缓存
3.不同的namespace查出的数据会放在自己对应的缓存中(map)
查询的数据都会被默认先放在一级缓冲中,只有会话提交或者关闭以后,一级缓冲中的数据才会转移到二级缓存中