第 3 章 Hibernate 标注


3.1. Hibernate 标注

org.hibernate.annotations 软件包包含在标准 Jakarta Persistence 注释之上,由 Hibernate 提供的一些注释。

Expand
表 3.1. 常规注解
注解描述

检查

可以在类、属性或集合级别上定义的任意 SQL 检查限制。

不可变

将实体或集合标记为不可变。无注释表示该元素是可变的。

不可变实体可能不会由应用更新。不可变实体的更新将被忽略,但不会抛出异常。

集合上放置 的 @immutable 使集合不可变,这意味着不允许向集合中添加和删除。在这种情况下,将抛出 HibernateException

Expand
表 3.2. 缓存实体
注解描述

cache

向 root 实体或集合添加缓存策略。

Expand
表 3.3. 集合相关注解
注解描述

MapKeyType

定义永久映射的密钥类型。

ManyToAny

定义指向不同实体类型的 ToMany 关联。匹配实体类型是通过元数据磁盘列实现的。此类映射应该只有很少的映射。

OrderBy

使用 SQL 排序(而非 HQL 排序)订购集合。

OnDelete

用于集合、数组和接合子类的策略。目前不支持次要表的 OnDelete

Persister

指定自定义持久化器。

排序

集合排序(Java 级别排序)。

其中

其中,要添加到集合的元素实体或目标实体的子句。子句使用 SQL 编写。

WhereJoinTable

其中,要添加到集合连接表的子句。子句使用 SQL 编写。

Expand
表 3.4. CRUD Operations 的自定义 SQL
注解描述

loader

覆盖 Hibernate 默认 FIND 方法.

SQLDelete

覆盖 Hibernate 默认 DELETE 方法。

SQLDeleteAll

覆盖 Hibernate 默认 DELETE ALL 方法。

SQLInsert

覆盖 Hibernate 默认 INSERT INTO 方法。

SQLUpdate

覆盖 Hibernate 默认 UPDATE 方法。

Subselect

将不可变和只读实体映射到给定 SQL 子选择表达式。

synchronize

确保自动清空正确,并且对派生实体的查询不会返回过时的数据。主要用于 Subselect.

Expand
表 3.5. 实体
注解描述

cascade

对关联应用级联战略。

实体

添加可能需要超过标准 @Entity 中定义的元数据。

  • 可变 :此实体是否可更改
  • dynamicInsert :允许动态 SQL 进行插入
  • dynamicUpdate :允许动态 SQL 进行更新
  • selectBeforeUpdate :指定 Hibernate 不应执行 SQL UPDATE,除非确定实际修改了某个对象。
  • 多形图 :实体多形体是 PolymorphismType.IMPLICIT(默认)还是 PolymorphismType.EXPLICIT
  • 中立地: 开放式锁定策略(OptimisticLockType.VERSION、OptimisticLockType.NONE、OptimisticLockType.DIRTY 或 OptimisticLockType.ALL)

    注意

    注解"Entity"已弃用,并计划在以后的版本中删除。其独立属性或值应当成为注释。

多态

用于定义多形 Hibernate 的类型适用于实体层次结构。

Proxy

特定类的 lazy 和代理配置。

表的补充信息,可以是主要或次要信息。

表的复数注释.

目标

定义明确的目标,避免误会和通用解决方案。

Tuplizer

为实体或组件定义导体。

Tuplizers

为实体或组件定义一组教学程序。

Expand
表 3.6. 获取
注解描述

BatchSize

用于 SQL 加载的批处理大小.

fetchProfile

定义获取策略配置文件。

FetchProfiles

@FetchProfile 的复数注释.

LazyGroup

指定应当获取实体属性以及属于同一组的所有其他属性。为了加载实体属性 lazily,需要进行字节代码增强。默认情况下,所有非收集属性都会加载到一个名为 DEFAULT 的组中。此注释允许在访问组中的一个属性时一起初始化不同的属性组。

Expand
表 3.7. 过滤器
注解描述

filter

向集合的实体或目标实体添加过滤器。

FilterDef

过滤定义.

FilterDefs

过滤器定义数组。

FilterJoinTable

为连接表集合添加过滤器。

FilterJoinTables

将多个 @FilterJoinTable 添加到集合中。

过滤器

添加多个 @Filter.

ParamDef

参数定义。

Expand
表 3.8. 主密钥
注解描述

generated

此注释的属性由数据库生成。

GenericGenerator

以取消输入的方式描述任何类型的 Hibernate 生成器的生成器注释。

GenericGenerators

通用生成器定义的数组。

NaturalId

指定属性是实体的自然 ID 的一部分。

参数

键/值模式.

RowId

支持 Hibernate 的 ROWID 映射功能.

Expand
表 3.9. 继承
注解描述

DiscriminatorFormula

将要放置在根实体上的磁盘公式。

DiscriminatorOptions

用于表达 Hibernate 特定磁盘属性的可选注释。

MetaValue

将给定的分级值映射到对应的实体类型。

Expand
表 3.10. 映射 JP-QL/HQL Queries
注解描述

NamedNativeQueries

扩展 NamedNativeQueries 以存放 Hibernate NamedNativeQuery 对象.

NamedNativeQuery

使用 Hibernate 功能扩展 NamedNativeQuery.

NamedQueries

扩展 NamedQueries 以存放 Hibernate NamedQuery 对象。

NamedQuery

使用 Hibernate 功能扩展 NamedQuery.

Expand
表 3.11. 映射简单属性
注解描述

AccessType

属性访问类型.

支持一组列.对于组件用户类型映射很有用。

ColumnTransformer

用于从 中读取值并将值写入列的自定义 SQL 表达式。使用 直接加载/保存对象以及查询。写入表达式必须只包含一个值的 '?' 占位符。

ColumnTransformers

@ColumnTransformer 的复数注释.当超过一列正在使用此行为时,非常有用。

Expand
表 3.12. 属性
注解描述

公式

在大多数地方用作 @Column 的替代品.公式必须是有效的 SQL 片段。

Index

定义数据库索引。

JoinFormula

可用于替换大多数位置的 @JoinColumn。公式必须是有效的 SQL 片段。

父级

将属性作为指针引用给所有者(通常是自有实体)。

类型

Hibernate 类型.

TypeDef

Hibernate 类型定义.

TypeDefs

Hibernate 类型定义数组.

Expand
表 3.13. 单个关联备注
注解描述

任意

定义指向多个实体类型的 ToOne 关联。与按实体类型匹配是通过元数据磁盘列实现的。此类映射应该只有很少的映射。

AnyMetaDef

定义 @Any@ManyToAny 元数据.

AnyMetaDefs

定义 @Any@ManyToAny 组元数据.可以在实体级别或软件包级别上定义。

获取

定义用于给定关联的 fetching 策略。

LazyCollection

定义集合的延迟状态。

LazyToOne

定义 ToOne 关联(即 OneToOne 或 ManyToOne )的 宽度状态。

NotFound

关联上找不到某一元素时要执行的操作.

Expand
表 3.14. 静止的锁定
注解描述

OptimisticLock

注释的属性更改将触发实体版本递增。如果没有该注释,该属性将涉及开放式锁定策略(默认)。

OptimisticLocking

用于定义应用于实体的开放式锁定方式。在层次结构中,仅在 root 实体上有效。

Source

可选注解与 Version 和时间戳版本属性组合。注解值决定时间戳的生成位置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat