SpringDataJPA执行原理解析

1 篇文章 0 订阅
1 篇文章 0 订阅

我们都知道 在SpringDataJpa中我们定义DAO层是不需要实现类的,只需要定义一个接口,并继承2个接口即可(JpaRepository,JpaSpecificationExecutor),即可直接操作持久层数据,这种情况,就是以动态代理的方式,进行api的实现,进行相应的操作;

执行一个查询操作 Debug
在单元测试环境中不加事务会报错(不加Rollback ,会自动回滚,相信大家都明白)
在这里插入图片描述

查看家族谱
可以看到 是有一个SimpleJpaRepository具体的实现类的, 以下四个是我定义的DAO接口 ,点实现类进去查看

在这里插入图片描述

看到是实现类的方法以及具体实现(就会有点焕然大悟的感觉(封装,封装,在封装))

在这里插入图片描述

在看看我们的查找方法 是哪个实现的
在这里插入图片描述
Debug看到了我们定义的UserDao的实现类型
在这里插入图片描述

我们可以看到 调用接口方法 debug进到了一个 JdkDyNamicAopProxy的类中这个类继承了Jdk提供的动态代理方式
并实现了invoke这个方法,对指定的对象进行动态代理的方式从而实现接口中的方法,才可以供我们调用.
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值