📜  Spring Boot – CrudRepository 和 JpaRepository 的区别

📅  最后修改于: 2022-05-13 01:54:53.861000             🧑  作者: Mango

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 extends Repository

在哪里:

  • T:存储库管理的域类型(通常是实体/模型类名)
  • ID:存储库管理的实体的 ID 类型(通常是在 Entity/Model 类中创建的 @Id 的包装类)

例子:

public interface DepartmentRepository extends CrudRepository {}

JpaRepository

JpaRepository 是 Repository 的JPA(Java Persistence API)特定扩展。它包含CrudRepositoryPagingAndSortingRepository的完整 API。因此它包含用于基本 CRUD 操作的 API 以及用于分页和排序的 API。

句法:

public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor

在哪里:

  • T:存储库管理的域类型(通常是实体/模型类名)
  • ID:存储库管理的实体的 ID 类型(通常是在 Entity/Model 类中创建的 @Id 的包装类)

例子:

public interface DepartmentRepository extends JpaRepository {}

Spring 数据存储库接口

在下图中的 Repository、CrudRepository 和 PagingAndSortingRepository 属于 Spring Data Commons 而 JpaRepository 属于 Spring Data JPA。

差异表

CrudRepository 

JpaRepository 

It is a base interface and extends Repository Interface.It extends PagingAndSortingRepository that extends CrudRepository.
It contains methods for CRUD operations. For example save(), saveAll(), findById(), findAll(), etc. It contains the full API of CrudRepository and PagingAndSortingRepository. For example, it contains flush(), saveAndFlush(), saveAllAndFlush(), deleteInBatch(), etc along with the methods that are available in CrudRepository.
It doesn’t provide methods for implementing pagination and sortingIt provides all the methods for which are useful for implementing pagination.
It works as a marker interface.It extends both CrudRepository and PagingAndSortingRepository.
To perform CRUD operations, define repository extending CrudRepository.To perform CRUD as well as batch operations, define repository extends JpaRepository.

Syntax: 

public interface CrudRepository extends Repository

Syntax:

public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor