8、spring data jpa执行原理分析

sprnig data jpa

1、原理分析图

在这里插入图片描述
接口不能帮助我们实现功能,真正发挥作用的是接口的实现类,在程序执行的过程中,自动的帮助我们动态的生成接口的实现类对象

如何动态的生成实现类对象?

​  动态代理(生成基于接口的实现类对象)

2、源码分析

1.通过jdkDynamicAopProxy的invoke方法创建了一个动态代理对象

2.SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD)

3.通过hibernate完成数据库操作(封装了jdbc)

代理子类的实现过程

2.1、断点执行到方法上时,我们可以发现注入的customerDao对象,本质上是通过JdkDynamicAopProxy生成的一个代理对象

在这里插入图片描述

2.2、代理对象中方法调用的分析

当程序执行的时候,会通过JdkDynamicAopProxy的invoke方法,对customerDao对象生成动态代理对象。根据对Spring Data JPA介绍而知,要想进行findOne查询方法,最终还是会出现JPA规范的API完成操作,而这个动态代理对象就是SimpleJpaRepository

在这里插入图片描述

通过SimpleJpaRepository的源码分析,定位到了findOne方法,在此方法中,返回em.find()的返回结果

em就是EntityManager对象,而他是JPA原生的实现方式,所以我们得到结论Spring Data JPA只是对标准JPA操作进行了进一步封装,简化了Dao层代码的开发

在这里插入图片描述

在这里插入图片描述

3、总结

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44230693/article/details/112450344