关于mybaits的缓存

mybaits框架为了能够更加高效的查询数据库中的数据,在查询的时候设置了缓存,具体是怎么回事呢? 一起来学习下吧
mybaits的缓存有两级
一级缓存:缓存在session 中,每个session私有,一定存在。
二级缓存:缓存在session和数据库中的某个位置,可以设置,属于所以session的公共缓存。

mybaits访问数据库的过程示意图如下
这里写图片描述

每次查询,首先访问session的缓存,拿到数据就返回,然没有就去二级缓存查看,拿到数据就返回没有,就去访问数据库。从数据库拿到数据后,先到二级缓存放一份,再到session缓存放一份。

拿二级缓存数据和session缓存数据的区别在于, 拿到session缓存数据时直接引用,拿到二级缓存的数据时拷贝,克隆, 克隆拿到的数据hashcodehi不一样。

下面我会来演示一下。
这里写图片描述

第一个hashcode:是从数据库中拿的。
第二个hashcode: 是和第一个hashcode属于同一个session,所以拿的数据师在第一个session缓存中拿到,属于引用。所以前面两个hashcode保存一致
第三哥hashcode:是从二级缓存拿的,克隆,hashcode不一样,同时因为不是从数据库中拿的数据,不缓存。
第四个hashcode:也是在二级缓存中拿的,u也是克隆,hashcode不一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值