Spring Boot – CrudRepository 和 JpaRepository 之間的區別
Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生產就緒環境,使開發人員能夠直接專注于邏輯,而不必費力配置和設置,因此如今它正成為開發人員的最愛。Spring Boot 是一個基于微服務的框架,在其中創建生產就緒的應用程序只需很少的時間。
CRUD 存儲庫?
Spring Boot 中有一個名為 CrudRepository 的接口,其中包含用于 CRUD 操作的方法。它提供了對存儲庫的通用 Crud 操作。它在包org.springframework.data.repository中定義,并擴展了 Spring Data Repository?接口。如果有人想在 Spring Boot 應用程序中使用 CrudRepository,他/她必須創建一個接口并擴展 CrudRepository 接口。?
句法:
public interface CrudRepository<T, ID> extends Repository<T, ID>
這里:
- T:存儲庫管理的域類型(通常是實體/模型類名)
- ID:存儲庫管理的實體的 id 類型(通常是在實體/模型類中創建的 @Id 的包裝類)
例子:
public interface DepartmentRepository extends CrudRepository<Department, Long> {}
Jpa存儲庫?
JpaRepository 是 Repository 的一個JPA(Java 持久性 API)特定擴展。它包含CrudRepository和PagingAndSortingRepository的完整 API?。因此,它包含用于基本 CRUD 操作的 API 以及用于分頁和排序的 API。?
句法:
public interface DepartmentRepository extends CrudRepository<Department, Long> {}
這里:
- T:存儲庫管理的域類型(通常是實體/模型類名)
- ID:存儲庫管理的實體的 id 類型(通常是在實體/模型類中創建的 @Id 的包裝類)
例子:
public interface DepartmentRepository extends JpaRepository<Department, Long> {}
Spring 數據存儲庫接口
下圖中的 Repository、CrudRepository 和 PagingAndSortingRepository 屬于 Spring Data Commons,而 JpaRepository 屬于 Spring Data JPA。?
差異表
CrudRepository?? | JpaRepository? |
它是一個基本接口并擴展了 Repository 接口。 | 它擴展了 PagingAndSortingRepository,而后者又擴展了 CrudRepository。 |
它包含用于 CRUD 操作的方法。例如 save()、saveAll()、findById()、findAll() 等。? | 它包含 CrudRepository 和 PagingAndSortingRepository 的完整 API。例如,它包含 flush()、saveAndFlush()、saveAllAndFlush()、deleteInBatch() 等以及 CrudRepository 中可用的方法。 |
它沒有提供實現分頁和排序的方法 | 它提供了實現分頁所需的所有方法。 |
它充當一個標記界面。 | 它擴展了 CrudRepository 和 PagingAndSortingRepository。 |
要執行 CRUD 操作,請定義擴展 CrudRepository 的存儲庫。 | 為了執行 CRUD 以及批量操作,定義存儲庫擴展 JpaRepository。 |
句法:? public interface CrudRepository<T, ID> extends Repository<T, ID> | 句法: public interface JpaRepository<T,ID> extends PagingAndSortingRepository<T,ID>, QueryByExampleExecutor<T> |