SpringData JPA的实现过程

Debug分析源码

SpringData JPA的实现过程
SpringData JPA的实现过程

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

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

流程总结

SpringData JPA的实现过程
简而言之,就是:
SpringData JPA的实现过程