1. 程式人生 > >Hibernate的關聯關係對映之多對多對映

Hibernate的關聯關係對映之多對多對映

**技術分析之多對多JavaBean的編寫**

1. 編寫使用者和角色的JavaBean

* 使用者的JavaBean程式碼如下

public class User {

private Long user_id;

private String user_code;

private String user_name;

private String user_password;

private String user_state;

private Set<Role> roles = new HashSet<Role>();

}

* 角色的JavaBean程式碼如下

public class Role {

private Long role_id;

private String role_name;

private String role_memo;

private Set<User> users = new HashSet<User>();

}

2. 使用者和角色的對映配置檔案如下

* 使用者的對映配置檔案如下

<class name="com.itheima.domain.User" table="sys_user">

<id name="user_id" column="user_id">

<generator class="native"/>

</id>

<property name="user_code" column="user_code"/>

<property name="user_name" column="user_name"/>

<property name="user_password" column="user_password"/>

<property name="user_state" column="user_state"/>

<!---多對多的配置

       name:實體類中的集合屬性名

       table:中間表

->

<set name="roles" table="sys_user_role">

<!--中間表中該實體類對應的外來鍵欄位-->

<key column="user_id"/>

<!---class:另一方中物件的全路徑名 column:中間表中外來鍵的欄位

-->

<many-to-many class="com.huge.domain.Role" column="role_id"/>

</set>

</class>

* 角色的對映配置檔案如下

<class name="com.itheima.domain.Role" table="sys_role">

<id name="role_id" column="role_id">

<generator class="native"/>

</id>

<property name="role_name" column="role_name"/>

<property name="role_memo" column="role_memo"/>

<set name="users" table="sys_user_role">

<key column="role_id"/>

<many-to-many class="com.huge.domain.User" column="user_id"/>

</set>

</class>

3. 多對多進行雙向關聯的時候:必須有一方去放棄外來鍵維護權

**技術分析之多對多的級聯儲存**

1. 級聯儲存

* <set cascade="save-update">

**級聯刪除(在多對多中是很少使用的)**

1. 級聯刪除

<set cascade="delete">