缓存
缓存只对查询有效,将查询的数据进行保存,等到查询相同的数据时,从缓存中取出
一级缓存
1.一级缓存的级别是SqlSession级别的,即通过同一个SqlSession的缓存中获取数据
2.一级查询失效:1)不同的sqlsession对象对应不同的一级缓存2)同一个sqlsession对象,但是查询条件不同3)同一个sqlsession两次查询期间执行了任何一次增删改操作4)手动清空了缓存
二级缓存
- 二级缓存是sqlSessionFactory级别的,通过同一个SqlSessionFactory创建的sqlSession查询的结果会被缓存,此后若再次执行相同的查询语句,则从缓存中取
- 二级缓存开启条件:1)全局配置文件中属性cacheEnabled=“true”,默认为true 2)在映射文件中设置标签<cache 3) 二级缓存在sqlsession关闭或提交后有效 4)查询的数据转换的实体类型必须实现序列化接口
- 失效:两次查询之间执行了任何的增删改
一级缓存和二级缓存
先查询二级缓存,再查询一级缓存,最后去找数据库,Sqlsession关闭后,一级缓存的数据会写入二级缓存