4.Hibernate O/R 映射
O/R 映射
目前為止我們已經通過應用 Hibernate 見識過十分基礎的 O/R 映射了,但是還有三個更加重要的有關映射的話題需要我們更詳細的探討。這三個話題是集合的映射,實體類之間的關聯映射以及組件映射。
集合映射
如果一個實例或者類中有特定變量的值的集合,那麽我們可以應用 Java 中的任何的可用的接口來映射這些值。Hibernate 可以保存 java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List 和其它持續的實例或者值的任何數組的實例。
集合類型 | 映射和描述 |
---|---|
java.util.Set | 它和 \<set> 元素匹配並且用 java.util.HashSet 初始化。 |
java.util.SortedSet | 它和 \<set> 元素匹配並且用 java.util.TreeSet 初始化。sort 屬性可以設置成比較器或者自然排序。 |
java.util.List | 它和 \<list> 元素匹配並且用 java.util.ArrayList 初始化。 |
java.util.Collection | 它和 \<bag> 或者 \<ibag> 元素匹配以及用 java.util.ArrayList 初始化。 |
java.util.Map | 它和 \<map> 元素匹配並且用 java.util.HashMap 初始化。 |
java.util.SortedMap") | 它和 \<map> 元素匹配並且用 java.util.TreeMap 初始化。sort 屬性可以設置成比較器或者 自然排序。 |
對於 Java 的原始數值 Hibernate 采用<primitive-array>
支持數組,對於 Java 的其它數值 Hibernate 采用<array>
支持數組。然而它們很少被應用,因此我也就不在本指導中討論它們。
如果你想要映射一個用戶定義的集合接口而這個接口不是 Hibernate 直接支持的話,那麽你需要告訴 Hibernate 你定義的這個集合的語法,這個很難操作而且不推薦使用。
關聯映射
實體類之間的關聯映射以及表之間的關系是 ORM 的靈魂之處。對象間的關系的子集可以用下列四種方式解釋。關聯映射可以是單向的也可以是雙向的。
映射類型 | 描述 |
---|---|
Many-to-One | 使用 Hibernate 映射多對一關系 |
One-to-One | 使用 Hibernate 映射一對一關系 |
One-to-Many | 使用 Hibernate 映射一對多關系 |
Many-to-Many | 使用 Hibernate 映射多對多關系 |
組件映射
作為變量的一員實體類很可能和其它類具有相關關系。如果引用的類沒有自己的生命周期並且完全依靠於擁有它的那個實體類的生命周期的話,那麽這個引用類因此就可以叫做組件類。
組件集合的映射很可能和正常集合的映射相似,只會有很少的設置上的不同。我們可以在例子中看看這兩種映射。
映射類型 | 描述 |
---|---|
Component Mappings | 類的映射對於作為變量的一員的另外的類具有參考作用。 |
_________________________________________________________________________________________________________________
4.Hibernate O/R 映射