介绍
如果您使用的是 Java Persistence API (JPA) 2.0,您可能想知道 AccessType 设置的用途以及如何使用它。本文将介绍 AccessType 设置的作用以及如何使用它来改善 JPA 体验。
Java 持久性 API 程序是用于访问 Java 应用程序中的数据库的标准接口。JPA 2.0 是 JPA 的最新版本,它引入了一个名为 AccessType 的新注释,它允许您指定 JPA 提供程序访问实体的方式。
在本文中,我们将了解为什么 AccessType 是相关的,以及如何在 JPA 应用程序中使用它。
快速浏览应用
长期以来,人们一直在争论现场访问是否优于JPA实体的财产访问。我见过的大多数论点都取决于性能与封装。虽然从理论角度来看,这些论点可能很有趣,但对现场访问的控制实际上在解决现实世界的问题方面非常有用。
字段访问允许代码区分在加载实体时设置属性的 JPA 提供程序与设置属性的应用程序代码。
这对于我参与的项目非常有用,该项目已取消规范化数据或其他计算和持久化的字段。以下是它的工作原理:
- 在影响非规范化属性计算的各种属性的 setter 中,非规范化属性的值设置为 null。@AccessType(FIELD) 用于这些属性。
- 在反规范化属性的 getter 中,如果值为 null,则重新计算反规范化值。
- 在@PrePersist方法中,调用 getter 以确保正确保留反规范化值。
使用这种技术,维护非规范化数据变得简单而可靠。
虽然这个功能从3.0开始就在Hibernate中可用,但我很高兴看到JPA 2.0(JSR 317)引入了一个标准注释来控制这种行为。
什么是 JPA 2.0?
Java Persistence API (JPA) 是 Java 中对象关系映射的规范。它定义了将数据映射到对象的方式,反之亦然。JPA 2.0 作为 Java EE 6 的一部分于 2009 年发布。
JPA 2.0 的发布是为了标准化数据映射到对象的方式,反之亦然。此外,JPA 2.0 引入了一个名为 AccessType 的新注释,它允许您指定 JPA 提供程序访问实体的方式。
JPA 2.0 通过提供标准注释来改善用户体验,该注释允许开发人员控制其实体的访问方式。此注释 AccessType 为开发人员提供了更大的灵活性,并控制 JPA 提供程序如何访问其实体。
此外,JPA 2.0 标准化了将数据映射到对象的方式,反之亦然,从而改善了整体用户体验。
JPA 2.0 的主要功能是什么?
JPA 2.0 的一个关键特性是支持 AccessType 注释。此批注可用于指定如何访问数据并将其映射到对象。有两种访问类型:
- 字段级访问:访问数据并将其直接映射到对象中的字段。
- 属性级访问:通过 getter 和 setter 方法间接访问和映射数据。
什么是访问类型?
AccessType 批注指定实体的访问类型。访问类型可以是 FIELD 或 PROPERTY。如果未指定访问类型,则默认值为 FIELD。
AccessType 具有以下属性:
- 值:指定访问类型。它可以是字段或属性。
- AccessType.FIELD:访问数据并将其直接映射到对象中的字段。
- AccessType.PROPERTY:通过 getter 和 setter 方法间接访问和映射数据。
AccessType 设置确定是否保留实体的字段或属性。默认情况下,将保留实体的所有字段和属性。但是,您可以使用 AccessType 设置来指定哪些字段或属性应持久化,哪些字段或属性不应持久化。
如果要避免保留与应用程序不相关的某些字段或属性,这可能很有用。
AccessType 在 JPA 2.0 中的相关性是什么?
AccessType 注释在 JPA 2.0 中是相关的,因为它可用于提高整体性能。通过指定访问类型,JPA 提供程序可以优化数据访问和映射到对象的方式。此外,AccessType 批注可用于减少需要编写的代码量。
AccessType 在 JPA 2.0 中具有相关性的原因有以下几个:
- 它可以用来提高性能。
- 它可以用来减少需要编写的代码量。
- 它可以用来提高代码的可维护性。
- 它可以用来提高代码的可读性。
如何使用访问类型?
若要使用 AccessType 批注,首先需要指定实体的访问类型。可以通过在实体类上使用@AccessType批注来执行此操作。例如,如果要使用属性级别访问权限,则应指定以下内容:
@AccessType(AccessType.PROPERTY)
public class MyEntity {//...}
或者,可以使用 XML 描述符指定实体的访问类型。例如,如果要使用字段级访问,则可以在持久性文件中指定以下内容.xml:
<persistence>
<persistence-unit>
<class>MyEntity</class>
<access>FIELD</access>
</persistence-unit>
</persistence>
AccessType 批注用于指定实体的访问类型。AccessType 枚举的可能值为 ACCESS(表示类级别访问)和 FIELD(表示字段级别访问)。还可以使用 XML 描述符指定访问类型。
类级别访问是默认访问类型,在未指定访问类型时使用。使用类级访问,实体的所有持久性字段和属性都将映射到数据库,而不管它们是否使用 Column 批注进行批注。
此规则的唯一例外是当字段或属性使用瞬态批注进行批注时,在这种情况下,它不会映射到数据库。
当您希望专门批注实体的哪些字段或属性映射到数据库时,将使用字段级访问。
使用字段级访问时,只有使用列批注批注的字段或属性才会映射到数据库。实体的其他字段和属性不会映射,并且不会保留在数据库中。
结论
总的来说,AccessType 注释是 JPA 2.0 的一个非常有用的补充。它可用于提高性能,减少需要编写的代码量,并提高代码的可维护性和可读性。如果您在应用程序中使用 JPA 2.0,我鼓励您使用此注释。