Mybatis一级缓存和二级缓存及区别

缓存:

概述:存在于内存中的临时数据。
缓存作用:
减少和数据库交互的次数,提高执行效率。
适用于缓存的:
1.经常查询并且不经常改变的。
2.数据的正确与否对最终结果影响不大。(数据的有效性和实时性)
不适用于缓存的:
1.经常改变的数据
2.数据的正确与否对最终的结果影响很大。

**

一级缓存

**
它指的是Mybatis中SqlSession对象的缓存。
当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
当SqlSession对象关闭时(close())或者手动清除后(clearCache()), mybatis的一级缓存也就消失了。
不同的SqlSession对象(openSession()),也会重复发送SQL语句
注意:如果数据发生变化,仍然会重新发送SQL
**

二级缓存

**
它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。
步骤:
1.全局配置


2.局部配置


3.标签使用

select * from user where id = #{id}

4.条件:(1)实体类要实现序列化(2)不同的session使用后要释放

一级缓存和二级缓存的区别:

1.一级缓存使用的是sqlsession对象缓存而二级缓存使用的是sqlsessionfactory对象缓存
2.一级缓存过程中的session是同一个session而二级缓存过程中的session不是同一个session
3.一级缓存缓存的是对象本身而二级缓存缓存的是数据,一级缓存的对象还是一样的;二级缓存数据还是一样的,数据重新构建成的对象就不同了,因为重新new了对象

你可能感兴趣的:(JAVA知识)