在 JPA 和 Sping Data JPA 中使用 Java Record
1、概览 在本教程中,我们将探讨如何在 JPA 中使用 Java Record,包括以下内容。
为什么 Record 不能作为 Entity 使用。 在 JPA 中使用 Record。 在 Spring Boot 应用中使用 Spring Data JPA 和 Record。 2、Record 和 Enttiy Record 是不可变的,用于存储数据。它们包含字段、全参数构造函数、getter、toString 和 equals/hashCode 方法。由于它们是不可变的,因此没有 setter。由于其语法简洁,在 Java 中经常被用作数据传输对象(DTO)。
Entity(实体)是映射到数据库表的类。它们用于表示数据库中的条目。它们的字段被映射到数据库表中的列。
2.1、Record 不能作为 Entity 实体由 JPA provider 处理。JPA provider 负责创建数据库表,将实体映射到表,并将实体持久化到数据库。在流行的 JPA provider(如 Hibernate)中,实体是使用代理来创建和管理的。
代理是在运行时生成并继承实体类的类。这些代理依赖于实体类的无参数构造函数和 setter。由于 Record 不具有这些,所以它们不能用作实体。
2.2、在 JPA 中使用 Record 的其他方法 由于在 Java 中使用 Record 的简便性和安全性,在 JPA 中以其他方式使用 Record 可能是有益的。
在 JPA中,我们可以通过以下方式使用 Record:
将查询结果转换为 Record。 使用 Record 作为DTO在各个层之间传输数据。 将实体转换为 Record。 3、项目设置 我们将使用 Spring Boot 创建一个使用 JPA 和 Spring Data JPA 的简单应用程序。然后,我们将了解在与数据库交互时使用 Record 的几种方法。