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

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

編輯:關於JAVA

上次的博文Hibernate從入門到精通(八)一對多單向關聯映射中,我們講解了一下一對多單向映射的相關 內容,這次我們講解一下一對多雙向映射的相關內容。

一對多雙向關聯映射

一對多雙向關聯映 射,即在一的一端存在多的一端的一個集合對象,在多的一端存在一的一端的一個對象,這樣就可以保證在加 載一的一端或多的一端將被指向端的集合或對象加載上來,即保證雙向關聯。

一對多雙向關聯映射和 一對多單向關聯映射的異同

一對多雙向關聯映射相應的類結構圖和代碼。具體如下:

public class Classes {    
    private int id;   
    private String name;      
    private Set students;  
          
    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 Set getStudents() {  
        return students;  
    }  
    public void setStudents(Set students) {  
        this.students = students;  
    }     
}  
      
public class Student {  
    private int id;   
    private String name;      
    private Classes classes;  
      
    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 Classes getClasses() {  
        return classes;  
    }  
    public void setClasses(Classes classes) {  
        this.classes = classes;  
    }  
}

通過對比之前我們在上篇博文Hibernate從入門到精通(八)一對多單向關聯映射中的關於一對多 單向關聯映射的相應的類結構圖和代碼。可以發現,一對多雙向關聯向和單向關聯的區別主要是在多的一端加 入了一的一端的對象,這就將單向關聯變成了雙向關聯。

為了更好說明兩者的區別,我們再看一下一對多 雙向關聯映射的表結構和相應的Hibernate映射配置。具體如下:

<class 

name="com.zs.hibernate.Classes" table="t_classes">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <set name="students" inverse="true">        
        <key column="classesid"/>  
        <one-to-many class="com.zs.hibernate.Student"/>  
    </set>  
</class>  
      
<class name="com.zs.hibernate.Student" table="t_student">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <many-to-one name="classes" column="classesid"/>  
</class>

從存儲結構上看,一對多單向關聯和雙向關聯沒有什麼區別,但是從配置文件上看 ,一對多雙向關聯的配置文件中在多的一端的配置文件上存在<many-to-one />的相關配置,即保證多 對一的映射,這就保證了雙向。

通過本次的講解,關於一對多雙向關聯的內容,我們就講解完畢了, 一對多映射是一個比較常用和重要的映射關系,希望讀者認真思考這部分內容,下次我們講多對多映射的相關 內容。

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