說起一對一關聯對映它有兩種方式來實現。下面分別說一下它的兩種不同的對映方式。
從圖中,可以猜到這種一對一對映是通過兩張表擁有相同的主鍵來進行關聯的。只有在載入的時候,二條資料的主鍵相同就關聯載入。
在這裡,我們通過people來載入idcard,進行一一對應。在設計實體類時,由於是根據people來載入idcard,所以,我們應該在
people類中加入idcard外來鍵。
部分**如下:
name="com.bjpowernode.hibernate.person"
table="t_person">
name="id">
class="foreign">
name="property">idcardparam>
generator>
id>
name="name"/>
name="idcard"
constrained="true"/>
class>
這裡用到的是foreign生成策略,使得生成的主鍵和關聯的屬性的值一樣。constrained=」true表示,當前主鍵(person的主鍵)還是乙個外來鍵標籤不會生成額外的資料表字段。只是宣告了一種一一對應關係
可以看出這樣做有很大的弊端:擴充套件性極差。當我想要將二者的關係設計為一對多時,就要重新修改資料表了,這樣會很麻煩的。
所以接下來看一下另外一種方式。
這種方式是在people表中加入idcard的外來鍵,並約束外來鍵唯一。這樣也實現了一對一的對映。
部分**:
name="com.bjpowernode.hibernate.person" table="t_person">
name="id">
class="native"/>
id>
name="name"/>
to-one name="idcard" unique="true"/>
class>
這裡通過unique="true"來約束外來鍵的唯一性。
很明顯,這種方式避免了很多弊端。它的可擴充套件性比前一種要好很多。
綜上所述,我們在設計一對一關聯時,還是最好選擇唯一外來鍵進行約束,這樣既實現了功能,擴充套件性也好。
Hibernate 一對一對映(二)
上篇介紹了hibernate一對一對映通過主鍵關聯,這篇介紹一對一對映通過唯一外來鍵關聯,還是用person和idcard例項說明。唯一外來鍵關聯其實是多對一的的特例,採用標籤來對映,指定多的一端unique為true,這樣就限制了多的一端的多重性為一,就是這樣來對映的。單向 person端 pac...
hibernate一對一關聯對映
一對一主鍵關聯對映 單向關聯person idcard 讓兩個實體物件的id保持相同,這樣可以避免多餘的字段被建立 具體對映 idcard 一對一主鍵關聯對映 雙向關聯person idcard 需要在idcard對映檔案中加入標籤指向person,指示hibernate如何載入person 預設根...
Hibernate 一對一關聯對映
hibernate 關聯對映包括 一對一關聯對映 一對多和多對一關聯對映 多對多關聯對映 本篇先說一對一關聯對映 原理 一對一關聯對映原理 讓兩個實體的主鍵一樣,這樣就不需要加入多餘的字段 例項 人與身份證號的關係,乙個人只有乙個身份證號,乙個身份證號對應乙個人 以單向關聯 person idcar...