hibernate雙向多對一映射關係

在電子商務應用中,經常會有這樣的需求:根據給定的客戶,得到該客戶的所有訂單;根據給定的訂單,得到該訂單的所屬客戶。對於這種雙向關聯的情況,在Hibernate應用中,也有人叫多對一雙向關聯,只是叫法不同而已,都是通過映射一對多雙向關聯關係來實現的。

不管是多對一單向關聯還是(一對多)多對一雙向關聯,在關係型數據庫中的表現方式都是一樣的,均通過外鍵參照來實現如圖4-18所示。

 
 

只是在持久化類與ORM映射文件中單向關聯與雙向關聯存在一些區別而已,如圖4-19所示。

 

  
 

 

持久化類Customer.java:


  1. package com.ORM;  
  2. import java.io.Serializable;  
  3. import java.util.*;  
  4. public class Customer implements Serializable{  
  5.     private java.lang.Integer id;               //ID號  
  6.     private java.lang.String cname;                 //客戶姓名  
  7.     private java.lang.String bank;              //銀行賬號  
  8.     private java.lang.String phone;                 //聯繫電話  
  9.     private Set orders = new HashSet();             //訂單集合  
  10.     public Customer(){}      
  11.     //省略上述各屬性的get/set方法對  

持久化類Orders.java:


  1. package com.ORM;  
  2. import java.io.Serializable;  
  3. public class Orders implements Serializable{  
  4.     private java.lang.Integer id;               //ID號  
  5.     private java.lang.String orderno;               //訂單編號  
  6.     private java.lang.Double money;                 //訂單金額  
  7.     private Customer customer;              //訂單的所屬客戶  
  8.     public Orders(){}  
  9.     //省略上述各屬性的get/set方法對  

customer表與Customer類的ORM映射文件Customer.hbm.xml:


  1. <hibernate-mapping package="com.ORM">  
  2.     <class name="Customer" table="customer">  
  3.         <id name="id" column="ID" type="integer">  
  4.             <generator class="identity"/>  
  5.         </id>   
  6.         <property name="cname" column="CNAME" type="string" />  
  7.         <property name="bank" column="BANK" type="string" /> 

 

  
 

 

orders表與Orders類的ORM映射文件Orders.hbm.xml:

 

  
 

發佈了21 篇原創文章 · 獲贊 28 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章