课程
/后端开发
/Java
/Mybatis缓存详解
一级缓存的情况下,tempEntity1 == tempEntity2是true,但是二级缓存输出的是false,这是为什么呢?两个都是从缓存获取的不是应该输出true吗?
2020-05-21
源自:Mybatis缓存详解 3-3
正在回答
二级缓存默认是可读写的,在可读写的情况下会用序列化缓存SerializedCache来装饰,在存入和获取的时候会对数据对象进行序列化和反序列化,返回的是一个新的对象。所以使用二级缓存的实体类必须实现序列化接口
,
一级缓存是因为是同一个sqlsession里面的,最终用的是同一个map作缓存,但是二级缓存,视频里面使用的是两个sqlsessionfactory,每个sqlsessionfactory独占一个configuration,缓存最终是包含在configuration里面,最终用的是各自的map,自然不能直接相等
慕仔3163040
举报
学习mybatis一级缓存、二级缓存及自定义缓存的使用
4 回答二级缓存的过程
1 回答二级缓存脏读问题
2 回答一级缓存读取的数据不对??
1 回答一级缓存是否真的有意义
3 回答mybatis 就是默认开启一级缓存的是吧