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 组件映射

映射一个类,该类将另一个类的引用作为成员变量。