一级缓存:默认开启,SqlSession级别,同一个SqlSession的相同查询条件可以使用缓存
一级缓存失效:
1)同一个SqlSession但是查询条件不同
2)同一个SqlSession两次查询期间执行了任何一次增删改操作
3)同一个SqlSession两次查询期间手动清空了缓存
二级缓存:需要手动开启,SqlSessionFactory级别,同一个SqlSessionFactory创建的SqlSession,执行相同的查询,可以使用缓存
二级缓存开启的条件:
1)在核心配置文件中,设置全局配置属性cacheEnapled="true",默认为true,不需要设置
2)在映射文件中设置标签<cache />
3)二级缓存必须在SqlSession关闭或提交之后有效,sqlSession.commit或者close,如果,没有提交或关闭,会保存在一级缓存,关闭或提交后,保存在二级缓存
4)查询的数据所转换的实体类类型必须实现序列化的接口
二级缓存失效的情况:
两次查询之间执行了任意的增删改,会使—级和二级缓存同时失效
缓存查询顺序:一二级同时开启,先查二级缓存