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

news/2025/1/13 3:09:31/

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.ppmy.cn/news/1562686.html

相关文章

探索Java爬虫:获取淘宝App商品详情原数据API接口的实现

在当今的互联网时代&#xff0c;数据是最宝贵的资源之一。对于电商平台而言&#xff0c;商品详情数据更是重中之重。本文将带你深入了解如何使用Java爬虫获取淘宝App商品详情的原数据API接口&#xff0c;帮助你掌握这一技术&#xff0c;提升数据获取能力。 一、为什么选择Java…

Python Matplotlib 教程-Matplotlib 如何绘制常见图表

Python Matplotlib 如何绘制常见图表 Matplotlib 是 Python 中最流行的数据可视化库之一&#xff0c;提供了多种方式绘制各种图表&#xff0c;如折线图、柱状图、散点图、饼图等。本篇文章将从基础入门开始&#xff0c;逐步介绍如何使用 Matplotlib 绘制这些常见图表&#xff…

切比雪夫插值

切比雪夫插值是一种基于切比雪夫节点的多项式插值方法&#xff0c;其优势是减少插值误差(特别是龙格现象&#xff1a;表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。 1. 切比雪夫节点 切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切…

Ungoogled Chromium127 编译指南 MacOS篇(八)- 开始编译

1. 引言 完成了所有依赖包的安装后&#xff0c;我们终于来到了最关键的编译阶段。在开始编译之前&#xff0c;有一些重要的配置信息需要了解。本文将指导您完成整个编译过程。 2. 签名相关说明 虽然在我们的测试编译中不需要进行签名操作&#xff0c;但了解官方的签名要求仍…

Linux (CentOS) 安装 Docker 和 Docker Compose

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

【广西乡镇界】arcgis格式shp数据乡镇名称和编码2020年内容测评

【广西乡镇界】arcgis格式shp数据乡镇名称和编码2020年内容测评

MongoTemplate 性能优化指南

MongoTemplate 性能优化指南 1. 查询优化 1.1 合理使用索引 为经常查询的字段创建索引使用复合索引优化多字段查询避免使用无索引的排序操作 // 创建索引示例 mongoTemplate.indexOps(Collection.class).ensureIndex(new Index().on("field1", Sort.Direction.AS…

HTML语言的数据库编程

HTML语言的数据库编程概述 引言 在当前的信息时代&#xff0c;数据是决策和运营的核心。几乎所有的应用程序都涉及到数据的存储、检索和处理。虽然HTML&#xff08;超文本标记语言&#xff09;本身并不能直接用于数据库编程&#xff0c;但它在Web开发中占据了重要的地位。通过…