两级缓存:
一级缓存:(本地缓存):sqlSession级别的缓存。一级缓存是一直开启的;sqlSession级别的一个Map
与数据库同一次会话期间查询到的数据会放在本地缓存中。
以后如果需要获取相同的数据,直接从缓冲中拿,没必要再去查询数据库;
二级缓存:(全局缓存);基于namespace级别的缓存;一个namespace对应一个二级缓存;
工作机制:
- 1.一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中;
- 2.如果会话关闭;一级缓存中的数据会被保存到二级缓存中;新的会话查询信息,就可以参照二级缓存中的内容
- 3.sqlSession==== EmployeeMapper ===>Employee
- DepartmentMapper===>Department
不同namespace查出的数据会放在自己对应的缓存中(map中)
效果:数据会从二级缓存中获取
查出的数据都会默认先放在一级缓存中。
只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中