延迟加载的底层原理知道吗?

简介: 延迟加载的底层原理知道吗?

延迟加载在底层主要使用的CGLIB动态代理完成的

第一是,使用CGLIB创建目标对象的代理对象,这里的目标对象就是开启了延迟加载的mapper

第二个是当调用目标方法时,进入拦截器invoke方法,发现目标方法是null值,再执行sql查询

第三个是获取数据以后,调用set方法设置属性值,再继续查询目标方法,就有值了

目录
相关文章
|
1月前
|
XML SQL Java
MyBatis 的延迟加载是如何实现的
MyBatis的延迟加载(懒加载)特性提高了性能,只在需要时加载关联数据。配置延迟加载需在`mybatis-config.xml`中设置`lazyLoadingEnabled`为`true`,`aggressiveLazyLoading`为`false`。实现原理基于代理对象,MyBatis为延迟加载属性创建代理,在访问时触发实际查询。代理通过Java动态代理实现,拦截方法调用,按需加载数据。
|
3月前
|
存储 C++
C++底层原理
C++底层原理
122 0
|
3月前
|
存储 设计模式 Java
Mybatis源码细节探究:二级缓存Cache对象是在什么时候创建的?
Mybatis源码细节探究:二级缓存Cache对象是在什么时候创建的?
|
10月前
|
前端开发 JavaScript API
Zustand 底层原理🚀🚀🚀
Zustand 底层原理🚀🚀🚀
|
存储 算法 安全
关联对象的实现原理
这篇文章是来详细解释AssociationedObject的实现原理,篇幅较长
59 0
关联对象的实现原理
|
JavaScript 前端开发 UED
延迟加载是什么,怎么使用?
延迟加载是什么,怎么使用?
74 0
|
SQL Java 数据库连接
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
80 0
|
SQL Java 数据库连接
Java 最常见的面试题:mybatis 是否支持延迟加载?延迟加载的原理是什么?
Java 最常见的面试题:mybatis 是否支持延迟加载?延迟加载的原理是什么?
|
存储 缓存 NoSQL
Yii2.0 的缓存底层是如何实现的?底层原理是什么?
Yii2.0 的缓存底层是如何实现的?底层原理是什么?
|
开发框架 PHP
PHPfinal方法的使用场景是什么?底层原理是什么?
PHPfinal方法的使用场景是什么?底层原理是什么?