Session加载实体对象的过程

Session加载实体对象的过程

  • ① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;
  • ② 如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null;
  • ③ 如果一级缓存查询失败则查询二级缓存,如果二级缓存命中则直接返回;
  • ④ 如果之前的查询都未命中,则发出SQL语句,如果查询未发现对应记录则将此次查询添加到Session的NonExists中加以记录,并返回null;
  • ⑤ 根据映射配置和SQL语句得到ResultSet,并创建对应的实体对象;
  • ⑥ 将对象纳入Session(一级缓存)的管理;
  • ⑦ 如果有对应的拦截器,则执行拦截器的onLoad方法;
  • ⑧ 如果开启并设置了要使用二级缓存,则将数据对象纳入二级缓存;
  • ⑨ 返回数据对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值