到目前为止,我们已经看到了非常基本的O/R映射使用Hibernate,但也有我们必须学会在细节三个最重要的映射绘制的主题。这些都是集合的映射,关联的实体类和组件映射之间的映射。
如果一个实体或类有收集特定变量的值,那么我们就可以用在Java中可用的集合接口中的任何一个对应的值。 Hibernate可以持久java.util.Map,java.util.Set中,java.util.SortedMap,java.util.SortedSet,java.util.List和持久性的实体或值的任意阵列的实例。
集合类型 | 映射和说明 |
---|---|
java.util.Set | This is mapped with a <set> element and initialized with java.util.HashSet |
java.util.SortedSet | This is mapped with a <set> element and initialized with java.util.TreeSet. The sort attribute can be set to either a comparator or natural ordering. |
java.util.List | This is mapped with a <list> element and initialized with java.util.ArrayList |
java.util.Collection | This is mapped with a <bag> or <ibag> element and initialized with java.util.ArrayList |
java.util.Map | This is mapped with a <map> element and initialized with java.util.HashMap |
java.util.SortedMap | This is mapped with a <map> element and initialized with java.util.TreeMap. The sort attribute can be set to either a comparator or natural ordering. |
数组是由Hibernate与<primitive-array>对Java基本值类型和针对的<array>所有其它支持。然而,他们很少用,所以我不打算讨论这些问题在本教程中。
如果要映射是不直接支持Hibernate的用户定义的集合接口,需要告诉Hibernate有关自定义集合是不太容易的,不建议使用的语义。
关联实体类和表之间的关系之间的映射是ORM的灵魂。以下是4的方法,使对象之间的关系的基数可以表示。关联映射可以是单向和双向的。
映射类型 | 描述 |
---|---|
Many-to-One | Mapping many-to-one relationship using Hibernate |
One-to-One | Mapping one-to-one relationship using Hibernate |
One-to-Many | Mapping one-to-many relationship using Hibernate |
Many-to-Many | Mapping many-to-many relationship using Hibernate |
这是非常有可能是一个实体类可以有一个引用到另一个类的一个成员变量。如果提到类没有它自己的生命周期,并完全依赖于所属的实体类的生命周期被引用类,因此因此被称为Component类。
收集组件的映射也是可能以类似的方式只是作为与次要配置差异正规集合的映射。我们将看到这两个映射详细的例子。
映射类型 | 描述 |
---|---|
Component Mappings | 映射一类具有参考到另一个类的一个成员变量。 |