1. 程式人生 > >SpringDataJPA執行原理解析

SpringDataJPA執行原理解析

我們都知道 在SpringDataJpa中我們定義DAO層是不需要實現類的,只需要定義一個介面,並繼承2個介面即可(JpaRepository,JpaSpecificationExecutor),即可直接操作持久層資料,這種情況,就是以動態代理的方式,進行api的實現,進行相應的操作;

執行一個查詢操作 Debug
在單元測試環境中不加事務會報錯(不加Rollback ,會自動回滾,相信大家都明白)
在這裡插入圖片描述

檢視家族譜
可以看到 是有一個SimpleJpaRepository具體的實現類的, 以下四個是我定義的DAO介面 ,點實現類進去檢視

在這裡插入圖片描述

看到是實現類的方法以及具體實現(就會有點煥然大悟的感覺(封裝,封裝,在封裝))

在這裡插入圖片描述

在看看我們的查詢方法 是哪個實現的
在這裡插入圖片描述
Debug看到了我們定義的UserDao的實現型別
在這裡插入圖片描述

我們可以看到 呼叫介面方法 debug進到了一個 JdkDyNamicAopProxy的類中這個類繼承了Jdk提供的動態代理方式
並實現了invoke這個方法,對指定的物件進行動態代理的方式從而實現介面中的方法,才可以供我們呼叫.
在這裡插入圖片描述

在這裡插入圖片描述