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">