阐述Session加载实体对象的过程

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,596评论 0 2
  • 转自:http://blog.csdn.net/jackfrued/article/details/4493116...
    王帅199207阅读 2,784评论 0 19
  • [福][福][福][福][福]临门, 让我们一起读诵«吉祥经»,祈愿并回向给您和您的家人及所有有缘人从今以后一切吉...
    小启明星阅读 1,632评论 0 0
  • 最早看到这句话是在书上,原话是这么说的,愤怒是无能的表现。今天可是感同身受的写下这篇文章,愤怒源于自己或者别人的能...
    迟来的文笔阅读 396评论 0 0
  • 之前读过一次简爱,很多句子都不能理解,然后又想着再读一次,这次读后的感触很深,我读到了不一样的简爱,之前更...
    WANG_M阅读 1,297评论 0 7

友情链接更多精彩内容