Hibernate注解详解:实体Bean与表映射

4星 · 超过85%的资源 需积分: 9 71 下载量 61 浏览量 更新于2024-07-30 收藏 220KB DOCX 举报
"这篇文档详述了Hibernate注解的使用,包括如何声明实体Bean,定义数据库表,以及处理一对一、一对多、多对多关系。此外,还提到了乐观锁版本控制的概念。" 在Java Persistence API (JPA) 和 Hibernate 框架中,注解是实现对象关系映射(ORM)的关键工具。以下是对给出的文件内容的详细解释: 1. **声明实体Bean**: 类使用`@Entity`注解表示它是一个持久化的实体Bean。例如,`Flight`类通过添加`@Entity`注解成为了一个数据库中的表映射。`@Id`注解则标记了实体Bean的主键属性,如`id`。 2. **定义数据库表**: `@Table`注解用于指定实体Bean所对应的数据库表名,如`Sky`类的`@Table(name="tbl_sky")`。`@Table`还可以包含`schema`和`catalog`属性,用于指定数据库的模式和目录。`@UniqueConstraint`用于定义表的唯一性约束,如在`month`和`day`字段上设置。 3. **乐观锁版本控制**: `@Version`注解用于实现乐观锁机制,例如在`Flight`类中的`version`属性。当实体Bean更新时,Hibernate会检查该版本字段,如果数据库中的版本号与读取时的版本号不同,则认为有并发修改,从而防止数据冲突。`@Version`字段通常使用整型或时间戳类型。 4. **持久化属性**: 非`static`非`transient`的类属性默认会被持久化,除非使用`@Transient`注解来忽略某个属性。所有未特别指定的属性默认都被`@Basic`注解覆盖,表示它们是基本的数据类型。 5. **关系映射**: - **一对一(OneToOne)**: Hibernate使用`@OneToOne`注解来表示两个实体之间的一对一关系,可以通过`mappedBy`属性指定关联的属性。 - **一对多(OneToMany)**: 当一个实体Bean拥有多个其他实体Bean实例时,使用`@OneToMany`注解。可通过`mappedBy`、`cascade`、`fetch`等属性进行详细配置。 - **多对一(ManyToOne)**: 反向的一对多关系,表示一个实体Bean属于另一个实体Bean的多个实例,使用`@ManyToOne`注解。 - **多对多(ManyToMany)**: 表示一个实体Bean可以与多个其他实体Bean实例关联,使用`@ManyToMany`注解。通常需要一个中间表来存储关联关系,可以通过`@JoinTable`进行配置。 以上内容只是Hibernate注解使用的一部分,实际开发中还有更多高级特性,如延迟加载(`@LazyCollection`)、级联操作(`@Cascade`)、查询注解(`@NamedQuery`, `@NamedNativeQuery`)等。理解并熟练应用这些注解,能帮助开发者更高效地实现ORM,简化数据库操作。