扫码一下
查看教程更方便
到目前为止,我们已经看到了非常基本的使用 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 | Many-to-On | 使用 Hibernate 映射多对一关系 |
2 | One-to-One | 使用 Hibernate 映射一对一关系 |
3 | One-to-Many | 使用 Hibernate 映射一对多关系 |
4 | Many-to-Many | 使用 Hibernate 映射多对多关系 |
一个实体类很有可能引用另一个类作为成员变量。 如果被引用的类没有自己的生命周期并且完全依赖于拥有实体类的生命周期,那么被引用的类因此被称为组件类。
组件集合的映射也可以通过与常规集合的映射类似的方式进行,但配置差异很小。 我们将通过示例详细了解这两个映射。
序号 | 映射类型 | 描述 |
---|---|---|
1 | 组件映射 | 映射具有对另一个类作为成员变量的引用的类。 |