一级缓存二级缓存的区别

一级缓存二级缓存的区别_第1张图片

  ①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

  ②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。二级缓存底层还是个HashMap去实现。

开启二级缓存代码:


	


    

二、

1、一级缓存
    a)SqlSession级别的
    b)默认是开启的
2、二级缓存
    a)二级缓存SQLSessionFactory(namesapce)
    b)默认是关闭的
    c)放在二级中的对象要实现对象序列化接口
    d)二级缓存可以使用第三方的
3、MyBatis的一级缓存和二级缓存都是用PerpetualCache来实现的
4、MyBatis执行更新操作后(cud),缓存都会被刷新

总结:

一级缓存是每个sqlsession私有的缓存区域,默认开启。

二级缓存是多个sqlsession共有的缓存区域,默认关闭,放在二级缓存中的对象必须实现序列化接口,且二级缓存可以使用第三方的。

你可能感兴趣的:(缓存,面试)