程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate從入門到精通(六)一對一雙向關聯映射

Hibernate從入門到精通(六)一對一雙向關聯映射

編輯:關於JAVA

在上次的博文Hibernate從入門到精通(五)一對一單向關聯映射中我們講解了一下一對一單向關聯映射, 這次我們繼續講解一下與之對應的一對一雙向關聯映射。

一對一雙向關聯

與一對一單向關聯映 射所不同的的是在一對一雙向關聯中,不但在一個對象(Person)中存在另一個對象(IdCard)的引用,而在另一 個對象(IdCard)中也存在對該對象(Person)的引用,這樣即可以在加載該對象(Person)的時候找到另一個對象 (IdCard),也可以在加載另一個對象(IdCard)的時候找到該對象(Person)。

類結構圖如下所 示:

具體代碼如下所 示:

public class Person {  
    private int id;           
    private String name;              
    private IdCard idCard;  
          
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public IdCard getIdCard() {  
        return idCard;  
    }  
    public void setIdCard(IdCard idCard) {  
        this.idCard = idCard;  
    }  
}  
      
public class IdCard {         
    private int id;       
    private String cardNo;        
    private Person person;  
          
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getCardNo() {  
        return cardNo;  
    }  
    public void setCardNo(String cardNo) {  
        this.cardNo = cardNo;  
    }  
    public Person getPerson() {  
        return person;  
    }  
    public void setPerson(Person person) {  
        this.person = person;  
    }  
}

與一對一單向關聯映射相同,一對一雙向關聯映射同樣關聯的策略不同會生成不同的表結構,也可 以分為主鍵關聯和唯一外鍵關聯。但與一對一單向關聯映射相同的是生成的表結構,即一對一雙向關聯映射與 一對一單向關聯相比,只是改變了一對一關聯映射的加載,並沒有改變存儲。

主鍵關聯

主鍵關 聯表結構如下:

同一對一單向關聯映射類似, 主鍵關聯即利用主鍵進行關聯,關聯主鍵的值相同。其相應的*.hbm.xml配置文件代碼如 下:

<class name="com.zs.hibernate.IdCard" table="t_idCard">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="cardNo"/>  
    <one-to-one name="person"/>  
</class>  
      
<class name="com.zs.hibernate.Person" table="t_person">  
    <id name="id">  
        <generator class="foreign">  
            <param name="property">idCard</param>  
        </generator>  
    </id>  
    <property name="name"/>                     
    <one-to-one name="idCard" constrained="true"/>  
</class>

唯一外鍵關聯

唯一外鍵關聯表結構如下:

一對一雙向關聯 映射的外鍵關聯映射也與一對一單向關聯映射的外鍵關聯映射類似,在其一對一的指向端(Person)存在一個唯 一外鍵,該唯一外鍵與被指向端(IdCard)相關聯,關聯主鍵的值相同。其相應的*.hbm.xml配置文件代碼如 下:

<class name="com.zs.hibernate.IdCard" table="t_idCard">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="cardNo"/>  
    <one-to-one name="person" property-ref="idCard"/>  
</class>  
      
<class name="com.zs.hibernate.Person" table="t_person">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <many-to-one name="idCard" unique="true"/>  
</class>

同樣利用在類文件中注解的方式也可以取代XML配置映射。

到此為止,單向和雙 向的一對一關聯我們就講解完畢了。講的不夠細,僅僅給大家講解了一下實例和幾點區別,但對於掌握和應用 Hibernate這些就可以了。下次我們繼續講解Hibernate映射的其他幾種。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved