问答详情
源自:3-3 mybatis二级缓存生命周期

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

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

提问者:草鱼禾 2020-05-21 10:21

个回答

  • qq_慕神0568869
    2020-06-09 22:57:20

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


  • 时间的痕迹
    2020-05-25 14:56:09

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