开发者社区> 问答> 正文

Mybatis支持延迟加载,它的实现原理是什么?

Mybatis支持延迟加载,它的实现原理是什么?

展开
收起
杜少平123-24791 2021-10-25 16:08:06 612 0
1 条回答
写回答
取消 提交回答
  • 它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。这就是延迟加载的基本原理。

    当然了,不光是Mybatis,几乎所有的包括Hibernate,支持延迟加载的原理都是一样的。

    2021-10-25 16:08:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
Spring框架入门 立即下载
低代码开发师(初级)实战教程 立即下载