一级缓存:
一级缓存是sqlsession级别的通过通过同一个sqlsession查询数据才会被缓存,下次查询的时候会直接在缓存中获取。
一级缓存存在的问题:
1)不同的sqlsession对应不同的一级缓存
2)同一个sqlsession但是查询条件不同
3)同一个sqlsession两次查询期间有增删改的操作
4)同一个sqlsession两次查询期间手动清除了缓存
二级缓存:
二级缓存是sqlsessionFachtory级别的通过同一个sqlsessionFachtory创建的sqlsession的查询结果才会被缓存伺候如果在执行相同的查询语句的时候,才会在缓存中拿。
二级缓存的条件:
1)在核心配置文件中设置全局配置属性cacheEnabled="true"默认为true不需要设置
2)在映射文件中配置
3)二级缓存必须在sqlsession关闭或者提交之后才有效
4)查询数据所转换的实体类类型必须实现序列化的接口
二级缓存失效的情况:
两次查询之间执行了任意的增删改,可以使一级缓存和二级缓存同时失效。
执行的流程:
在我们没有提交或者关闭sqlsession的时候我们的的数据会被保存到一级缓存中,当我们关闭或者提交了数据后我们的数据才会保存到二级缓存中。



