兩個實體對象之間是一對一的關聯映射,即一個對象只能與另外惟一的一個對象相對應。例如:一我的(Person)只有一張身份證(IdCard)。咱們看一下這個例子的對象模型,以下圖所示:html
從上圖中能夠看出:java
一、一我的只有一張身份證,惟一的一個身份證號,對象之間是一對一的關係;app
二、人(Person)持有身份證(IdCard)的引用,因此,兩個對象關係維護由person端決定。測試
從對象模型映射成關係模型,有兩種方式:主鍵關聯和惟一外鍵關聯,咱們繼續看下面的內容。this
一、兩個實體對象的主鍵同樣,以代表它們之間的一一對應關係;spa
二、不須要多餘的外鍵字段來維護關係,僅經過主鍵來關聯,即Person的主鍵要依賴IdCard的主鍵,他們共用一個主鍵值。.net
以上兩點恰與惟一外鍵關聯相反。hibernate
主鍵關聯的關係模型xml
Person.hbm.xmlhtm
[html] view plain copy
生成的表結構以及測試數據:
一、兩個實體對象用一個外鍵來關聯,以表代表對象之間的關係。
二、其實它是多對一關聯映射的特例,多的一端加上惟一的限制以後,用來表示一對一的關聯關係。
因此它採用多對一的標籤來映射,以下所示:
[html] view plain copy
惟一外鍵的關係模型
Person.hbm.xml
[html] view plain copy
生成的表結構以及測試數據:
其餘相同代碼以下:
Person
[java] view plain copy
IdCard
[java] view plain copy
IdCard.hbm.xml
[html] view plain copy
因爲一對一主鍵關聯映射具備如下兩個缺點:
一、靈活性差,沒有辦法改爲多對一關聯映射,不能應變多變的需求;
二、必須先保存關聯對象IdCard,以後才能保持Person;
因此,在映射一對一單向關聯映射時,咱們採用惟一外鍵關聯映射。