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

简介: Session加载实体对象的步骤是:① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;② 如果一级缓存没有命中,接下来Session会在当前NonExists记...

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

目录
相关文章
|
1月前
new 一个对象的过程中发生了什么
new 一个对象的过程中发生了什么
12 2
|
4月前
|
存储
通俗解释:Session生成、存储与管理
通俗解释:Session生成、存储与管理
31 0
|
5月前
|
SQL 缓存 Java
Mybatis源码细节探究:MappedStatement和Cache对象对照关系研究
Mybatis源码细节探究:MappedStatement和Cache对象对照关系研究
|
5月前
|
存储 算法 Java
细探究,Java对象创建过程和访问的奥秘
细探究,Java对象创建过程和访问的奥秘
53 0
|
9月前
|
存储 数据安全/隐私保护
session的概念特点及原理
session的概念特点及原理
63 0
|
12月前
|
存储 编译器 C语言
C++ 基础篇之类 & 对象的关系
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。
|
存储 安全 Java
|
Java 容器
JavaWeb中四大域对象的作用范围
JavaWeb中四大域对象的作用范围
218 0