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

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.lryc.cn/news/518483.html

相关文章:

  • 蓝桥杯备考:数据结构之栈 和 stack
  • solidity基础 -- 映射
  • Angular 11课程实践:构建高效单页应用的支持代码
  • 测试用例颗粒度说明
  • ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告
  • Windows安装ES单机版设置密码
  • Linux Docker
  • MSE学习
  • 0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)
  • MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法
  • 挑战20天刷完leecode100
  • Java列表示例
  • Objective-C语言的网络编程
  • 安卓OCR使用(Google ML Kit)
  • 《机器学习》——贝叶斯算法
  • 【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率
  • 网站自动签到
  • C 语言奇幻之旅 - 第16篇:C 语言项目实战
  • 项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试
  • 04、Redis深入数据结构
  • 【MySQL学习笔记】MySQL的索引
  • 利用ArcGIS快速准确地统计出地块的现状容积率
  • C++类的引入
  • 【跨域问题】
  • “深入浅出”系列之FFmpeg:(1)音视频开发基础
  • Springboot3.4整合jsp
  • CSS:背景样式、盒子模型与文本样式
  • 算法:线性查找
  • 【计算机网络】什么是网关(Gateway)?
  • 20250106面试