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

相关推荐
007php0071 小时前
PHP与Java项目在服务器上的对接准备与过程
java·服务器·开发语言·分布式·面试·职场和发展·php
sheji34161 小时前
【开题答辩全过程】以 民宿预订管理系统的设计与实现为例,包含答辩的问题和答案
java
刘大猫.2 小时前
XNMS项目-拓扑图展示
java·人工智能·算法·拓扑·拓扑图·节点树·xnms
万象.2 小时前
redis数据结构set和zset的基本指令
数据结构·数据库·redis
正在努力Coding7 小时前
SpringAI - 工具调用
java·spring·ai
TOPGUS7 小时前
谷歌发布三大AI购物新功能:从对话式搜索到AI代你下单
大数据·人工智能·搜索引擎·chatgpt·谷歌·seo·数字营销
我尽力学8 小时前
面试 总结
java·spring boot·面试
爬台阶的蚂蚁8 小时前
Spring AI Alibaba基础概念
java·spring·ai
计算机学姐8 小时前
基于SpringBoot的演唱会抢票系统
java·spring boot·后端·spring·tomcat·intellij-idea·推荐算法
全栈测试笔记8 小时前
异步函数与异步生成器
linux·服务器·前端·数据库·python