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

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

編輯:關於JAVA

上次我們在中Hibernate從入門到精通(十)多對多單向關聯映射講解了一下多對多單向關聯映射,這次我 們講解一下七種映射中的最後一種多對多雙向關聯映射。

多對多雙向關聯映射

按照我們之前的慣例,先看一下相關類圖和代碼,具體如下:

public class Role {  
    private int id;   
    private String name;      
    private Set users;  
          
    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 getUsers() {  
        return users;  
    }  
    public void setUsers(Set users) {  
        this.users = users;  
    }  
}  
      
public class User {       
    private int id;       
    private String name;  
    private Set roles;  
          
    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 getRoles() {  
        return roles;  
    }  
    public void setRoles(Set roles) {  
        this.roles = roles;  
    }  
}

接下來我們對比之前的博文Hibernate從入門到精通(十)多對多單向關聯映射中的多對多單向關 聯映射,來具體分析一下多對多雙向關聯映射,重點體會兩者的區別和聯系。

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

分析我們上述的類圖和代碼我們可以看出:單獨看多對多雙向關聯的一端,多對多 雙向與多對多單向關聯沒有根本區別。只是在多對多的兩端各有一個集合(Set),它用來存儲與之相關的多個對 象。(參考Hibernate從入門到精通(十)多對多單向關聯映射)

接下來我們從存儲結構上看兩者的區別,具 體如下:

從上圖可以看出 ,多對多單向與雙向的存儲結構沒有任何區別。接下來我們再來看一下配置信息。具體如下:

<class name="com.zs.hibernate.Role" table="t_role">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <set name="users" table="t_user_role">  
        <key column="role_id" not-null="true"/>  
        <many-to-many class="com.zs.hibernate.User" column="user_id"/>  
    </set>  
</class>  
      
<class name="com.zs.hibernate.User" table="t_user">  
    <id name="id">  
        <generator class="native"/>  
    </id>  
    <property name="name"/>  
    <set name="roles" table="t_user_role">  
        <key column="user_id" not-null="true"/>  
        <many-to-many class="com.zs.hibernate.Role" column="role_id" />     
    </set>  
</class>

對比我們之前的博文Hibernate從入門到精通(十)多對多單向關聯映射中的多對 多單向映射的配置信息,我們可以看出在單向映射中,只能A->B,不能B->A,所以A與B的關系是不等的 。而在雙向關聯映射中,既能A->B,也能B->A,所以A與B的關系是等價的。這樣也就造成了在雙向關聯 映射的配置文件的兩個類的配置信息基本相同,即A=B。

到此為止我們關於關聯映射的所有內容就基本講完 了,接下來我們會繼續講解一下Hibernate的其他內容,敬請期待!

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