由于应用程序与数据库的交互是一个较为耗费资源的过程,所以减少应用程序对数据库的访问能够提高效率。
MyBatis默认开启缓存
SqlSession缓存
同一个SqlSession 对象调用同一个select语句时,缓存中会存取此个statement对象,在下一次应用程序调用此select语句时会直接从缓存中读取,不会访问数据库,缓存的有效范围仅仅是此个SqlSession。
SqlSessionFactory缓存
二级缓存,有效范围,同一个factory中的所有SqlSession都可以获取,使用二级缓存需要在Mapper.xml文件中修改配置
<cache readOnly="true"></cache>
或者将实体类序列化(将临时内存文件写入硬盘)
注意:只有当Sqlsession对象close()或者commit时,才会把SqlSession写入 SqlSessionFactory缓存。