天天看點

dao層繼承jparepository怎麼用_淺析SpringDataJpa繼承結構

一、SpringDataJpa的含義:

SpringDataJpa: 是Spring基于ORM架構、JPA規範封裝的一套JPA應用架構,是SpringData中的一個子子產品,可讓開發者用極簡的代碼即可實作對資料的通路和操作。它提供了包括增删改查、排序、分頁等在内的常用功能,主要針對的就是 Spring 的業務邏輯代碼。

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

二、SpringDataJpa的繼承結構:

SpringDataJpa的優點:它的Dao層隻需要寫接口,不需要寫實作類,隻需要寫一個接口繼承JpaRepository接口即可,該接口有兩個泛型,在Dao層接口裡可以什麼都不用寫。

T:domain實體類類型

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

dao層繼承jparepository怎麼用_淺析SpringDataJpa繼承結構
dao層繼承jparepository怎麼用_淺析SpringDataJpa繼承結構

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類已經幫我們将所有抽象方法都實作了。

歡迎工作一到五年的Java工程師朋友們加入Java程式員開發: 721575865

群内提供免費的Java架構學習資料(裡面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!