一對一關聯
主鍵關聯:即兩張表通過主鍵形成一對一映射關系。
TUer.hbm.xml

















TPassport.hbm.xml
















測試代碼:





























一對多關聯
用戶TUser和地址TAddress的一對多關聯。
單向一對多關聯
主控方TUser的映射配置:






















單向一對多的實現比較簡單,但是存在一個問題,由于是單向關聯,為了保持關聯關系,我們只能通過主控方對被動方進行級聯更新。如果被關聯方的關聯字段為“NOT NULL”,當Hibernate創建或者更新時,可能出現約束違例。
雙向多對一關聯
實際上是“一對多”與“多對一”關聯的組合。也就是說我們必須在主控方配置一對多關系的基礎上,在被控方配置與其對應的多對一關聯。
TUser.hbm.xml

























在one-to-many關系中,將many一方設置為主控方(inverse=“true”)將有助于性能的改善。
TAddress.hbm.xml























多對多關聯
需要借助中間表來完成多對多映射信息的保存。
由于多對多關聯的性能不佳(由于引入了中間表,一次讀取操作需要反復多次查詢),因此在設計中應該避免大量使用。同時,在多對多關系中,應根據情況,采取延遲加載機制來避免無謂的性能開銷。
TGroup與TRole的多對多關聯:
TGroup.hbm.xml:

























cascade=“save-update”,對于多對多邏輯而言,很少出現刪除一方需要級聯刪除所有關聯數據的情況,如刪除一個group,一般不會刪除其中包含的Role。
column=“group_id”映射表中對于t_group表記錄的標識字段。
TRole.hbm.xml:


























