不管是單向關聯仍是雙向關聯都是經過第三張表,將兩個表中的主鍵放到第三張作一個關聯。用第三張表來解決可能會形成數據冗餘的問題。html
一個用戶(User)對多個角色(Role),一個角色對多個用戶。java
對象模型app
關係模型測試
實例this
下面咱們看一下實體類和映射文件的代碼。spa
User.net
[java] view plain copyhibernate
Rolexml
[java] view plain copyhtm
User.hbm.xml
[html] view plain copy
Role.hbm.xml
[html] view plain copy
生成的表結構和測試數據
多對多關聯映射,在實體類中,跟一對多關聯映射同樣,也是用集合來表示的。<set>標籤中用table屬性重命名中間表名稱,<key>標籤訂義當前表的主鍵,用<many-to-many>標籤來關聯另外一張表。
對象模型
關係模型
同上
實例
下面咱們看一下實體類和映射文件的代碼。
User
[html] view plain copy
Role
[java] view plain copy
User.hbm.xml
[html] view plain copy
Role.hbm.xml
[html] view plain copy
生成的表結構和測試數據
多對多雙向關係中,User和Role的映射文件相同,值得注意的是生成的中間表名稱必須同樣,生成中間表的字段必須同樣。