开发者社区> 问答> 正文

Session加载实体对象的步骤是什么?

Session加载实体对象的步骤是什么?

展开
收起
范zzhaha 2021-10-27 11:45:49 381 0
1 条回答
写回答
取消 提交回答
  • ① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;

    ② 如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null;

    ③ 如果一级缓存查询失败则查询二级缓存,如果二级缓存命中则直接返回;

    ④ 如果之前的查询都未命中,则发出SQL语句,如果查询未发现对应记录则将此次查询添加到Session的NonExists中加以记录,并返回null;

    ⑤ 根据映射配置和SQL语句得到ResultSet,并创建对应的实体对象;

    ⑥ 将对象纳入Session(一级缓存)的管理;

    ⑦ 如果有对应的拦截器,则执行拦截器的onLoad方法;

    ⑧ 如果开启并设置了要使用二级缓存,则将数据对象纳入二级缓存;

    ⑨ 返回数据对象。

    2021-10-27 13:02:21
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对象的生命期管理 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载