`

JPA注解详解(二)

阅读更多

@Transient

默认情况下,JPA 持续性提供程序假设实体的所有字段均为持久字段。

使用 @Transient 批注指定实体的非持久字段或属性,例如,一个在运行时使用但并非实体状态一部分的字段或属性。

JPA 持续性提供程序不会对批注为 @Transient 的属性或字段持久保存(或创建数据库模式)。

该批注可以与 @Entity @MappedSuperclass @Embeddable 一起使用。

该批注没有属性。有关更多详细信息,请参阅 API

示例 1-89 显示了如何使用此批注将 Employee 字段 currentSession 指定为非持久字段。JPA 持续性提供程序将不持久保存该字段。

示例 1-89 @Transient

@Entitypublic class Employee {    @Id int id;    @Transient Session currentSession;    ...}

@UniqueConstraint

默认情况下,JPA 持续性提供程序假设所有列均可以包含重复值。

使用 @UniqueConstraint 批注指定将在为主表或辅助表生成的 DDL 中包含一个唯一约束。或者,您可以在列级别指定唯一约束(请参阅 @Column )。

表 1-48 列出了此批注的属性。有关更多详细信息,请参阅 API

1-48 @UniqueConstraint 属性

属性

必需

说明

columnNames

必需

 

如果任何列均包含唯一约束,请将 columnNames 设置为 String 列名的数组。

 

示例 1-90 显示了如何使用此批注对主表 EMP 中的列 EMP_ID EMP_NAME 指定一个唯一约束。

示例 1-90 使用唯一约束的 @Table

@Entity

@Table(

name="EMP",

uniqueConstraints={@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})}

)

public class Employee implements Serializable {

    ...

}

@Version

默认情况下,JPA 持续性提供程序假设应用程序负责数据一致性。

使用 @Version 批注通过指定用作其乐观锁定值的实体类的版本字段或属性来启用 JPA 管理的乐观锁定(推荐做法)。

选择版本字段或属性时,确保:

·    每个实体只有一个版本字段或属性

·    选择一个持久保存到主表的属性或字段(请参阅 @Table

·    您的应用程序不修改版本属性或字段

此批注没有属性。有关更多详细信息,请参阅 API

示例 1-91 显示了如何使用此批注将属性 getVersionNum 指定为乐观锁定值。在该示例中,该属性的列名设置为 OPTLOCK (请参阅 @Column ),而非属性的默认列名。

示例 1-91 @Version

@Entity

public class Employee implements Serializable {

    ...

@Version

@Column(name="OPTLOCK")

protected int getVersionNum() {

return versionNum;

    }

    ...

}

@Column

默认情况下,JPA 持续性提供程序假设每个实体的持久字段存储在其名称与持久字段的名称相匹配的数据库表列中。

使用 @Column 批注:

  • 将持久字段与其他名称关联(如果默认列名难于处理、与事先存在的数据模型不兼容或作为数据库中的列名无效)
  • 将持久字段与辅助表中的列关联(请参阅 @SecondaryTable
  • 微调数据库中列的特征

表 1-7 列出了此批注的属性。有关更多详细信息,请参阅 API

1-7 @Column 属性

属性

必需

说明

columnDefinition

可选

 

默认值:空 String

默认情况下,JPA 使用最少量 SQL 创建一个数据库表列。

如果需要使用更多指定选项创建的列,请将 columnDefinition 设置为在针对列生成 DDL 时希望 JPA 使用的 SQL 片断。

注意:捕获批注中的 DDL 信息时,某些 JPA 持续性提供程序可以在生成数据库模式时使用此 DDL 。例如,请参阅 用于 Java2DB 模式生成的 TopLink JPA 扩展”

insertable

可选

 

默认值: true

默认情况下,JPA 持续性提供程序假设所有列始终包含在 SQL INSERT 语句中。

如果该列不应包含在这些语句中,请将 insertable 设置为 false

length

可选

 

默认值: 255

默认情况下,JPA 持续性提供程序假设所有列在用于保存 String 值时的最大长度为 255 个字符。

如果该列不适合于您的应用程序或数据库,请将 length 设置为适合于您的数据库列的 int 值。

name

可选

 

默认值:JPA 持续性提供程序假设实体的每个持久字段都存储在其名称与持久字段或属性的名称相匹配的数据库表列中。

要指定其他列名,请将 name 设置为所需的 String 列名。

nullable

可选

 

默认值: true

默认情况下,JPA 持续性提供程序假设允许所有列包含空值。

如果不允许该列包含空值,请将 nullable 设置为 false

precision

可选

 

默认值: 0.

默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的精度为 0

如果该精度不适合于您的应用程序或数据库,请将 precision 设置为相应的 int 精度。

scale

可选

 

默认值: 0.

默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的伸缩度为 0

如果该伸缩度不适合于您的应用程序或数据库,请将 scale 设置为相应的 int 精度。

table

可选

 

默认值:JPA 持续性提供程序假设实体的所有持久字段都存储到一个其名称为实体名称的数据库表中(请参阅 @Table )。

如果该列与辅助表关联(请参阅 @SecondaryTable ),请将 name 设置为相应辅助表名称的 String 名称,如示例 1-8 所示。

unique

可选

 

默认值: false

默认情况下,JPA 持续性提供程序假设允许所有列包含重复值。

如果不允许该列包含重复值,请将 unique 设置为 true 。设置为 true 时,这相当于在表级别使用 @UniqueConstraint

updatable

可选

 

默认值: true

默认情况下,JPA 持续性提供程序假设列始终包含在 SQL UPDATE 语句中。

如果该列不应包含在这些语句中,请将 updatable 设置为 false

 

示例 1-8 显示了如何使用此批注使 JPA empId 持久保存到辅助表 EMP_HR 中的列 EMP_NUM 。默认情况下,JPA empName 持久保存到主表 Employee 中的列 empName

示例 1-8 @Column

@Entity
@SecondaryTable(name="EMP_HR")
public class Employee implements Serializable {
    ...
@Column(name="EMP_NUM", table="EMP_HR")
private Long empId;

private String empName;
    ...
}

分享到:
评论

相关推荐

    java程序使用JPA注解详解.doc

    Java 程序使用 JPA 注解详解 Java 持久层 API(Java Persistence API)是一种 Java 应用程序接口,用于访问、管理和持久化数据之间的关系。JPA 使用注解来定义实体类与数据库表之间的映射关系,本文将详细介绍 JPA ...

    java程序使用JPA注解详解

    Java 程序使用 JPA 注解详解 Java 程序使用 JPA 注解可以实现对象关系映射(ORM),使得 Java 应用程序能够与关系数据库进行交互。JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系...

    jpa注解详解

    JPA注解详解 JPA(Java Persistence API)是Java企业版5(Java EE 5)的一部分,提供了一个对象关系映射方法,使得开发者可以使用声明方式定义如何将Java对象映射到关系数据库表。在JPA中,批注是一种使用元数据...

    JPA注解详解

    **JPA注解详解** Java Persistence API(JPA)是一种Java平台上的标准,用于管理和持久化对象关系映射(ORM)。在JPA中,注解是声明性编程的一部分,允许开发者在实体类上直接定义数据存储相关的元数据,简化数据库...

    java程序使用JPA注解详解.zip

    本资料主要探讨Java程序中如何有效利用JPA注解进行数据库交互。 在Java程序中,JPA注解通常应用于实体类(Entity)及其属性上,这些注解定义了实体与数据库表之间的关系。例如,`@Entity`注解标记一个类为数据库表...

    JPA注解说明 详解

    JPA通过使用注解或XML来定义对象-关系映射(ORM),简化了数据库操作。下面将详细介绍JPA中的一些核心注解及其用法。 1. **@Entity(name="EntityName")**:此注解标记一个Java类为一个实体类,它对应数据库中的一个...

    jpa注解doc文档

    Jpa注解的各种jpa注释详解

    JPA注解参考文档.txt

    ### JPA注解参考知识点详解 #### 一、引言 Java Persistence API(简称JPA)作为Java企业版5(Java EE 5)标准的一部分,是Enterprise JavaBeans(EJB)3.0规范的重要组成部分。它极大地简化了EJB持久化,并提供了...

    JPA注解@Access实例

    **JPA注解@Access详解** Java Persistence API (JPA) 是Java中用于对象关系映射(ORM)的标准框架,它允许开发人员将Java类与数据库表进行映射,从而简化数据操作。在JPA中,`@Access`注解是用于指定实体属性访问...

    JPA注解文档

    **JPA注解详解** Java Persistence API (JPA) 是Java平台上的一个规范,用于管理关系数据库中的对象。它提供了一种面向对象的方式来操作数据库,而无需深入理解SQL。在这个文档中,我们将深入探讨JPA中的一些核心...

    Jpa注解编程_好不容易找到

    ### JPA注解编程知识点详解 #### 一、引言 在现代软件开发过程中,持久化数据至数据库是一项常见的需求。Java Persistence API (JPA) 作为一种标准规范,提供了对象关系映射(ORM)功能,使得Java开发者可以更加...

    JPA注解参考

    ### JPA注解详解:构建高效数据库映射与操作 #### 概述 JPA(Java Persistence API)作为Java EE 5(Java Platform, Enterprise Edition)标准的一部分,为EJB 3.0提供了对象关系映射(ORM)的能力。它不仅简化了...

    JPA注解帮助文档

    ### JPA注解详解 #### 一、概述 Java Persistence API (JPA) 是 Java 社区标准 JSR-317 的一部分,它提供了一种面向对象的方式来处理数据库操作,极大地方便了 Java 应用程序对关系数据库的操作。JPA 主要包括两个...

    JPA 注解(一)

    **JPA注解详解(一)** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化对象到数据库。它简化了在Java应用中处理关系数据库的过程,通过提供一套注解来声明对象与数据库表之间的映射。本篇...

    JPA详解视频教程 第13讲 JPA中的多对多双向关联实体定义与注解设置.avi

    JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第13讲 JPA中的多对多双向关联实体定义与注解设置.avi

    JPA注解(转)

    **JPA注解详解** Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它提供了一种对象/关系映射(ORM)机制,使得开发人员可以使用面向对象的编程方式来操作数据库。在JPA中,注解...

    JPA注解总结

    ### JPA注解详解 Java Persistence API (JPA) 是一种用于管理关系型数据库对象的标准。JPA 使用注解和 XML 来配置实体类与数据库表之间的映射关系。本文将详细解读 JPA 注解的基本用法,并通过 Hibernate 框架作为...

    JPA注解详细解释、EJB3、 Hibernate开发

    ### JPA注解详解 Java Persistence API (JPA) 是一种用于管理关系型数据库对象的标准。JPA 使用注解来简化对象与关系映射(ORM)的过程,这使得开发者能够更加专注于业务逻辑而不是数据访问层的细节。下面将详细...

Global site tag (gtag.js) - Google Analytics