- Hibernate教程
- Hibernate - 主页
- ORM - 概述
- Hibernate - 概述
- Hibernate - 架构
- Hibernate - 环境
- Hibernate - 配置
- Hibernate - 会话
- Hibernate - 持久类
- Hibernate - 映射文件
- Hibernate - 映射类型
- Hibernate - 示例
- Hibernate - O/R 映射
- Hibernate - 注释
- Hibernate - 查询语言
- Hibernate - 标准查询
- Hibernate - 原生 SQL
- 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 进行初始化。排序属性可以设置为比较器或自然排序。 |
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 进行初始化。排序属性可以设置为比较器或自然排序。 |
Hibernate 支持数组,<primitive-array> 用于 Java 原始值类型,<array> 用于其他所有类型。然而,它们很少被使用,所以我不会在本教程中讨论它们。
如果你想映射一个用户定义的集合接口,而Hibernate不直接支持,你需要告诉Hibernate你的自定义集合的语义,这不是很容易,不推荐使用。
关联映射
实体类之间的关联和表之间的关系的映射是ORM的灵魂。以下是表达对象之间关系基数的四种方式。关联映射可以是单向的,也可以是双向的。
先生。 | 映射类型和描述 |
---|---|
1 | 多对一
使用 Hibernate 映射多对一关系 |
2 | 一对一
使用 Hibernate 映射一对一关系 |
3 | 一对多
使用 Hibernate 映射一对多关系 |
4 | 多对多
使用 Hibernate 映射多对多关系 |
组件映射
实体类很可能可以将另一个类作为成员变量进行引用。如果被引用的类没有自己的生命周期,并且完全依赖于所属实体类的生命周期,那么被引用的类因此被称为组件类。
组件集合的映射也可以采用类似的方式,就像具有较小配置差异的常规集合的映射一样。我们将通过示例详细了解这两个映射。
先生。 | 映射类型和描述 |
---|---|
1 | 组件映射
映射一个类,该类将另一个类的引用作为成员变量。 |