既然有了一级缓存,那么为什么要提供二级缓存呢?
1、在一级缓存中,不同session进行相同SQL查询的时候,是查询两次数据库的。显然这是一种浪费,既然SQL查询相同,就没有必要再次查询数据库了,直接利用缓存数据即可,这种思想就是MyBatis二级缓存的初衷。
2、Spring和MyBatis整合时,每次查询之后都要进行关闭sqlsession,关闭之后数据被清空。所以MyBatis和Spring整合之后,一级缓存是没有意义的。如果开启二级缓存,关闭sqlsession后,会把该sqlsession一级缓存中的数据添加到mapper namespace的二级缓存中。这样,缓存在sqlsession关闭之后依然存在。
引用:http://www.mybatis.cn/archives/746.html