- Hibernate 教程
- Hibernate - 首页
- ORM - 概述
- Hibernate - 概述
- Hibernate - 架构
- Hibernate - 环境
- Hibernate - 配置
- Hibernate - 会话
- Hibernate - 持久化类
- Hibernate - 映射文件
- Hibernate - 映射类型
- Hibernate - 示例
- Hibernate - O/R 映射
- Hibernate - 级联类型
- Hibernate - 注解
- Hibernate - 查询语言
- Hibernate - Criteria 查询
- Hibernate - 原生 SQL
- Hibernate - 缓存
- Hibernate - 实体生命周期
- Hibernate - 批处理
- Hibernate - 拦截器
- Hibernate - ID 生成器
- Hibernate - 保存图片
- Hibernate - log4j 集成
- Hibernate - Spring 集成
- Hibernate - Struts 2 集成
- Hibernate - Web 应用程序
- 映射表示例
- Hibernate - 表继承策略(每个层次结构一张表)
- Hibernate - 表继承策略(每个具体类一张表)
- Hibernate - 表继承策略(每个子类一张表)
- Hibernate 有用资源
- Hibernate - 问答
- Hibernate - 快速指南
- Hibernate - 有用资源
- Hibernate - 讨论
Hibernate - O/R 映射
到目前为止,我们已经看到了使用 Hibernate 进行非常基本的 O/R 映射,但还有三个最重要的映射主题,我们需要详细学习。
它们是 -
- 集合的映射,
- 实体类之间关联的映射,以及
- 组件映射。
集合映射
如果一个实体或类对于某个特定变量具有值的集合,那么我们可以使用 Java 中提供的任何一个集合接口来映射这些值。Hibernate 可以持久化 **java.util.Map、java.util.Set、java.util.SortedMap、java.util.SortedSet、java.util.List** 以及任何 **数组** 的持久化实体或值。
序号 | 集合类型 & 映射描述 |
---|---|
1 | java.util.Set
这映射为 <set> 元素,并使用 java.util.HashSet 初始化。 |
2 | java.util.SortedSet
这映射为 <set> 元素,并使用 java.util.TreeSet 初始化。可以将 **sort** 属性设置为比较器或自然排序。 |
3 | java.util.List
这映射为 <list> 元素,并使用 java.util.ArrayList 初始化。 |
4 | java.util.Collection
这映射为 <bag> 或 <ibag> 元素,并使用 java.util.ArrayList 初始化。 |
5 | java.util.Map
这映射为 <map> 元素,并使用 java.util.HashMap 初始化。 |
6 | java.util.SortedMap
这映射为 <map> 元素,并使用 java.util.TreeMap 初始化。可以将 **sort** 属性设置为比较器或自然排序。 |
Hibernate 支持使用 <primitive-array>(用于 Java 基本值类型)和 <array>(用于其他所有类型)的数组。但是,它们很少使用,因此我不会在本教程中讨论它们。
如果要映射 Hibernate 不直接支持的用户定义集合接口,则需要告诉 Hibernate 自定义集合的语义,这并不容易,也不建议使用。
关联映射
实体类之间关联的映射以及表之间的关系是 ORM 的核心。以下是表示对象之间关系的基数的四种方式。关联映射可以是单向的,也可以是双向的。
序号 | 映射类型 & 描述 |
---|---|
1 | 多对一
使用 Hibernate 映射多对一关系 |
2 | 一对一
使用 Hibernate 映射一对一关系 |
3 | 一对多
使用 Hibernate 映射一对多关系 |
4 | 多对多
使用 Hibernate 映射多对多关系 |
组件映射
实体类很有可能将另一个类作为成员变量引用。如果被引用的类没有自己的生命周期,并且完全依赖于拥有实体类的生命周期,那么被引用的类因此被称为 **组件类**。
组件集合的映射也类似于常规集合的映射,只是配置略有不同。我们将通过示例详细了解这两种映射。
序号 | 映射类型 & 描述 |
---|---|
1 | 组件映射
为具有对另一个类作为成员变量的引用的类的映射。 |