SpringData JPA的实现过程

Debug分析源码

在这里插入图片描述
在这里插入图片描述

  • 代理子类的实现过程:
    在这里插入图片描述
    断点执行到方法上时,我们可以发现注入的customerDao对象,本质上是通过JdkDynamicAopProxy生成的一个代理对象。

  • 代理对象中方法调用的分析
    当程序执行的时候,会通过JdkDynamicAopProxyinvoke方法,对customerDao对象生成动态代理对象。根据对Spring Data JPA介绍而知,要想进行findOne查询方法,最终还是会出现JPA规范的API完成操作,而这些方法都是通过JdkDynamicAopProxy生成的动态队里对象SimpleJpaRepository实现的
    在这里插入图片描述
    通过SimpleJpaRepository的源码分析,定位到了findOne方法,在此方法中,返回em.find()的返回结果,这个em就是EntityManager对象。
    在这里插入图片描述
    EntityManager对象是JPA的原生的实现方法,因此,可以得出结论:SpringData JPA是对标准JPA操作的进一步封装。

流程总结

在这里插入图片描述
简而言之,就是:
在这里插入图片描述

发布了254 篇原创文章 · 获赞 70 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/104021570
今日推荐