@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 注解详解 Java 持久层 API(Java Persistence API)是一种 Java 应用程序接口,用于访问、管理和持久化数据之间的关系。JPA 使用注解来定义实体类与数据库表之间的映射关系,本文将详细介绍 JPA ...
Java 程序使用 JPA 注解详解 Java 程序使用 JPA 注解可以实现对象关系映射(ORM),使得 Java 应用程序能够与关系数据库进行交互。JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系...
JPA注解详解 JPA(Java Persistence API)是Java企业版5(Java EE 5)的一部分,提供了一个对象关系映射方法,使得开发者可以使用声明方式定义如何将Java对象映射到关系数据库表。在JPA中,批注是一种使用元数据...
**JPA注解详解** Java Persistence API(JPA)是一种Java平台上的标准,用于管理和持久化对象关系映射(ORM)。在JPA中,注解是声明性编程的一部分,允许开发者在实体类上直接定义数据存储相关的元数据,简化数据库...
本资料主要探讨Java程序中如何有效利用JPA注解进行数据库交互。 在Java程序中,JPA注解通常应用于实体类(Entity)及其属性上,这些注解定义了实体与数据库表之间的关系。例如,`@Entity`注解标记一个类为数据库表...
JPA通过使用注解或XML来定义对象-关系映射(ORM),简化了数据库操作。下面将详细介绍JPA中的一些核心注解及其用法。 1. **@Entity(name="EntityName")**:此注解标记一个Java类为一个实体类,它对应数据库中的一个...
Jpa注解的各种jpa注释详解
### JPA注解参考知识点详解 #### 一、引言 Java Persistence API(简称JPA)作为Java企业版5(Java EE 5)标准的一部分,是Enterprise JavaBeans(EJB)3.0规范的重要组成部分。它极大地简化了EJB持久化,并提供了...
**JPA注解@Access详解** Java Persistence API (JPA) 是Java中用于对象关系映射(ORM)的标准框架,它允许开发人员将Java类与数据库表进行映射,从而简化数据操作。在JPA中,`@Access`注解是用于指定实体属性访问...
**JPA注解详解** Java Persistence API (JPA) 是Java平台上的一个规范,用于管理关系数据库中的对象。它提供了一种面向对象的方式来操作数据库,而无需深入理解SQL。在这个文档中,我们将深入探讨JPA中的一些核心...
### JPA注解编程知识点详解 #### 一、引言 在现代软件开发过程中,持久化数据至数据库是一项常见的需求。Java Persistence API (JPA) 作为一种标准规范,提供了对象关系映射(ORM)功能,使得Java开发者可以更加...
### JPA注解详解:构建高效数据库映射与操作 #### 概述 JPA(Java Persistence API)作为Java EE 5(Java Platform, Enterprise Edition)标准的一部分,为EJB 3.0提供了对象关系映射(ORM)的能力。它不仅简化了...
### JPA注解详解 #### 一、概述 Java Persistence API (JPA) 是 Java 社区标准 JSR-317 的一部分,它提供了一种面向对象的方式来处理数据库操作,极大地方便了 Java 应用程序对关系数据库的操作。JPA 主要包括两个...
**JPA注解详解(一)** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化对象到数据库。它简化了在Java应用中处理关系数据库的过程,通过提供一套注解来声明对象与数据库表之间的映射。本篇...
JPA用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用对象持久化的开发工作,实现ORM的统一。JPA详解视频教程 第13讲 JPA中的多对多双向关联实体定义与注解设置.avi
**JPA注解详解** Java Persistence API(JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它提供了一种对象/关系映射(ORM)机制,使得开发人员可以使用面向对象的编程方式来操作数据库。在JPA中,注解...
### JPA注解详解 Java Persistence API (JPA) 是一种用于管理关系型数据库对象的标准。JPA 使用注解和 XML 来配置实体类与数据库表之间的映射关系。本文将详细解读 JPA 注解的基本用法,并通过 Hibernate 框架作为...
### JPA注解详解 Java Persistence API (JPA) 是一种用于管理关系型数据库对象的标准。JPA 使用注解来简化对象与关系映射(ORM)的过程,这使得开发者能够更加专注于业务逻辑而不是数据访问层的细节。下面将详细...