为了账号安全,请及时绑定邮箱和手机立即绑定

一级缓存和二级缓存,对象不相等?

一级缓存的情况下,tempEntity1 == tempEntity2是true,但是二级缓存输出的是false,这是为什么呢?两个都是从缓存获取的不是应该输出true吗?

正在回答

2 回答

二级缓存默认是可读写的,在可读写的情况下会用序列化缓存SerializedCache来装饰,在存入和获取的时候会对数据对象进行序列化和反序列化,返回的是一个新的对象。所以使用二级缓存的实体类必须实现序列化接口


0 回复 有任何疑惑可以回复我~

一级缓存是因为是同一个sqlsession里面的,最终用的是同一个map作缓存,但是二级缓存,视频里面使用的是两个sqlsessionfactory,每个sqlsessionfactory独占一个configuration,缓存最终是包含在configuration里面,最终用的是各自的map,自然不能直接相等

0 回复 有任何疑惑可以回复我~
#1

慕仔3163040

这个说法不正确,二级缓存是公用的,一个对象只会缓存一份,按道理讲应该是true才对啊
2020-09-01 回复 有任何疑惑可以回复我~
#2

慕仔3163040

下面有个同学回答的才是正确的,你这个回答是错误的。
2020-09-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

一级缓存和二级缓存,对象不相等?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信