淺析SpringDataJpa繼承結構


一、SpringDataJpa的含義:

  SpringDataJpa: 是Spring基於ORM框架、JPA規范封裝的一套JPA應用框架,是SpringData中的一個子模塊,可讓開發者用極簡的代碼即可實現對數據的訪問和操作。它提供了包括增刪改查、排序、分頁等在內的常用功能,主要針對的就是 Spring 的業務邏輯代碼。

  它是JPA規范的再次封裝抽象,底層還是使用了Hibernate的JPA技術實現,引用JPQL的查詢語句 ,是屬於Spring的生成體系中的一部分。

 

二、SpringDataJpa的繼承結構:

  SpringDataJpa的優點:它的Dao層只需要寫接口,不需要寫實現類,只需要寫一個接口繼承JpaRepository接口即可,該接口有兩個泛型<T,ID>,在Dao層接口里可以什么都不用寫。

T:domain實體類類型

ID:domain實體類的主鍵字段類型

      

  SpringDataJpa繼承結構圖分析:

  1、JpaRespository、PagingAndSortingRepository、CrudRepository三個接口都添加了@NoRepositoryBean注解【只要添加這個注解,Spring在掃描到有這個注解    的接口的時候就不用生成實現類,就不用創建bean對象】。

  2、我們自定義的IEmployeeRepository接口沒有添加這個注解,那么Spring在掃描到這個接口的時候,就會給這個接口創建對象,但是這個接口卻沒有實現類,那SpringDataJpa就會利用動態代理技術給這個接口自動生成一個實現類,然后進行動態編譯、類加載、反射來創建對象,最后保存到Spring容器中,這樣就不用自己手動寫Dao層實現類也可以獲得Dao層接口的對象,然后使用@Autowired進行自動注入了。

  3、其實SpringDataJPA內部已經寫了一個實現類實現了JPARepository接口,已經實現了JpaRespository、PagingAndSortingRepository、CrudRepository這三個接口中的所有抽象方法,SpringDataJPA自動幫我們生成的實現類會自動:

    實現IEmployeeRepository接口,

    繼承SimpleJapRepository類,

最終我們得到(注入)的那個對象其實本質是SimpleJapRepository類的子類對象!!!

      4、 因為SpringDataJPA自動幫我們生成的類繼承了SimpleJPARepository類,並且實現了IEmployeeRepository接口,所以創建對象之后就可以調用直接JpaRespository、PagingAndSortingRepository、CrudRepository這三個接口中的所有方法了,因為SimpleJPARepository類已經幫我們將所有抽象方法都實現了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM