当前位置: 首页 > article >正文

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

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)特定扩展。它包含CrudRepositoryPagingAndSortingRepository的完整 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>


http://www.kler.cn/a/472594.html

相关文章:

  • QPS和TPS 的区别是什么?QPS 大了会有什么问题,怎么解决?
  • Bash语言的数据库编程
  • 力扣刷题:数组OJ篇(下)
  • Linux 正则表达式 ⑪
  • 计算机网络之---有线网络的传输介质
  • pytorch中nn.Conv2d详解及参数设置原则
  • 一个个顺序挨着来 - 责任链模式(Chain of Responsibility Pattern)
  • LabVIEW之树形控件
  • el-table 自定义表头颜色
  • HTML5 旋转动画(Rotate Animation)详解
  • k8s的ip地址分别都是从哪里来的
  • 【Uniapp-Vue3】v-model双向绑定的实现原理
  • 第30天:Web开发-PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计
  • K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法
  • INT301 Bio Computation
  • 基于 Python 的 PDF 动画翻页效果的阅读器实现
  • Android NDK开发入门2之适应idm环境
  • .NET AI 开发人员库 --AI Dev Gallery
  • Linux pget 下载命令详解
  • filebeat、kafka
  • 基于Android的疫苗预约系统
  • 腾讯云AI代码助手编程挑战赛-古诗词学习
  • WordPress静态缓存插件WP Super Cache与 WP Fastest Cache
  • Spring Boot集成RocketMQ
  • C++实现银行排队系统
  • 单片机-定时器中断