這篇博客,咱們開始介紹基於基本映射的關聯關係映射。html
基本映射是對一個實體進行映射,關聯映射就是處理多個實體之間的關係,將關聯關係映射到數據庫中,所謂的關聯關係在對象模型中有一個或多個引用。java
關聯關係分爲上述七種,可是因爲相互之間有各類關係,能夠簡化,例如:多對一與一對多映射,只是側重的角度不對而已。數據庫
映射技巧是小編寫映射文件的過程,總結的經典內容,總共分爲四步,咋看不是特別易懂,可是效果很好。下面咱們以實例看技巧。app
(1)寫註釋框架
格式爲:?屬性,表達的是本對象與?的?關係。this
解釋:在寫映射文件以前先寫註釋,將問號的地方填上相應的內容。例如:<!-- group屬性,表達的是本對象(User)與Group的多對一的關係-->spa
(2)寫映射的框架(拷模版).net
多對一hibernate |
<many-to-one name=「」 class=「」 column=「」/>xml |
一對多 (Set) |
<set name=""> <key column=""></key> <one-to-many class=""/> </set> |
多對多 (Set) |
<set name="" table=""> <key column=""></key> <many-to-many class="" column=""/> </set> |
(3)填空
填空,就是將映射的框架信息,填寫完成,完成映射文件。
• name屬性:屬性名(註釋中的第1問號)
• class屬性:關聯的實體類型(註釋中的第2個問號)
• column屬性:
○ <many-to-one column="..">:通常能夠寫成屬性名加Id後綴,如屬性爲group,則column值寫成groupId。
○ 一對多中的<key column="..">:從關聯的對方(對方是多對一)映射中把column值拷貝過來。
○ 多對多中的<key column=「..」>:通常能夠寫成本對象的名加Id後綴,如本對象名爲User,則寫爲userId。
○ 多對多中的<many-to-many column=「..」>:通常能夠寫爲關聯對象的名稱加Id後綴。
(4)完成
將映射文件添加到hibernate.hbm.xml中,這個相信你們都知道爲何。
咱們後面全部關聯映射的博文都使用此映射技巧來寫映射文件,明白以後,速度會很是快。
多的一端維護關聯關係,在「多」的一端加入一個外鍵,指向「一」的一端。多的一端持有一的一端的引用,即在「多」的一端加外鍵,指向「一」的一端。
好比,多個用戶屬於同一組,咱們從對象模型和關係模型兩個角度來分析一下這個例子,以下:
從上圖能夠看出,對象模型具備方向性,經過用戶(User)能夠看到組(Group),可是不能反過來。用戶和組各對應一張數據庫表,聚合關係須要一個外鍵(groupid)來表示,最後生成的表以下所示:
當我拿到用戶時直接就能夠拿到用戶的組,hibernate在訪問多的一端時,能夠自動的加載關聯對象。對於用戶(User)來講,它的關聯對象是組(group)。
上面都是多對一關聯映射的基本原理,以及相應的實例,下面咱們看一下代碼:
User類
[java] view plain copy
Group類
[java] view plain copy
User.hbm.xml
[html] view plain copy
Group.hbm.xml
[html] view plain copy
生成的表結構,與上面的分析的關係模型同樣:
項目中,多對一關聯映射是最多見的映射,但它是Hibernate的關聯映射中最簡單的一種映射關係。下篇博文,咱們介紹一對一單向關聯映射,謝謝關注。