1. 程式人生 > >Hibernate 對映關係 ---One2Many單向關聯

Hibernate 對映關係 ---One2Many單向關聯


一個商品類別下對應著多個商品,在關聯關係裡,就是以集合的方式關聯,一般是Set集合

 

[java]  view plain copy
  1. package com.pojo;  
  2. import java.util.HashSet;  
  3. import java.util.Set;  
  4. /** 
  5.  *  
  6.  * 商品類別 
  7.  */  
  8. public class Category implements java.io.Serializable {  
  9.     private static final long serialVersionUID = 4772491895582904188L;  
  10.     private
     int id;  
  11.     private String name;  
  12.     private String mark;  
  13.     private Set<Product> product = new HashSet<Product>() ;  
    //一個商品類別有多個商品,存放在set裡面  
  14.       
  15.     public Category() {  
  16.     }  
  17.     public int getId() {  
  18.         return id;  
  19.     }  
  20.     public void setId(int id) {  
  21.         this.id = id;  
  22.     }  
  23.     public String getName() {  
  24.         return this.name;  
  25.     }  
  26.     public void setName(String name) {  
  27.         this.name = name;  
  28.     }  
  29.     public String getMark() {  
  30.         return this.mark;  
  31.     }  
  32.     public void setMark(String mark) {  
  33.         this.mark = mark;  
  34.     }  
  35.     public Set<Product> getProduct() {  
  36.         return product;  
  37.     }  
  38.     public void setProduct(Set<Product> product) {  
  39.         this.product = product;  
  40.     }  
  41. }  
 

 

[java]  view plain copy
  1. package com.pojo;  
  2. /** 
  3.  *  
  4.  *  
  5.  * 商品 
  6.  */  
  7. public class Product implements java.io.Serializable {  
  8.     private static final long serialVersionUID = -4090151482387518292L;  
  9.     private int id;  
  10.     private String productname;  
  11.     private String remark;  
  12.     public Product() {  
  13.     }  
  14.     public String getProductname() {  
  15.         return this.productname;  
  16.     }  
  17.     public void setProductname(String productname) {  
  18.         this.productname = productname;  
  19.     }  
  20.     public String getRemark() {  
  21.         return this.remark;  
  22.     }  
  23.     public void setRemark(String remark) {  
  24.         this.remark = remark;  
  25.     }  
  26.     public int getId() {  
  27.         return id;  
  28.     }  
  29.     public void setId(int id) {  
  30.         this.id = id;  
  31.     }  
  32. }  

 

在XML檔案裡面就是配置一對多的關聯了:

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="com.pojo.Category" table="CATEGORY" schema="ZM">  
  9.         <id name="id" type="java.lang.Integer">  
  10.             <column name="ID" precision="8" scale="0" />  
  11.             <generator class="increment" />  
  12.         </id>  
  13.         <property name="name" type="java.lang.String">  
  14.             <column name="NAME" length="100" />  
  15.         </property>  
  16.         <property name="mark" type="java.lang.String">  
  17.             <column name="MARK" length="100" />  
  18.         </property>  
  19.           
  20.         <!-- 一對多關聯,一種類別對應多個商品  -->  
  21.         <set name="product"  >  
  22.         <key column="PRODUCTTYPEID" foreign-key="id"></key>  
  23.         <one-to-many class="com.pojo.Product" />  
  24.         </set>  
  25.           
  26.           
  27.     </class>  
  28. </hibernate-mapping>  

 

測試類:

[java]  view plain copy
  1. package com.test;  
  2. import java.util.Set;  
  3. import org.hibernate.Session;  
  4. import com.pojo.Category;  
  5. import com.pojo.Product;  
  6. import com.util.HibernateManager;  
  7. public class Test1 {  
  8.     /** 
  9.      * beckham Dec 14, 2009 7:30:06 PM 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         Test1.loadPro() ;  
  13.     }  
  14.     public static void addType() {  
  15.         Session session = HibernateManager.openSession();  
  16.         Category c = new Category();  
  17.         c.setName("電腦");  
  18.         c.setMark("這是電腦類別");  
  19.         try {  
  20.             session.save(c);  
  21.             HibernateManager.closeSession();  
  22.         } catch (Exception e) {  
  23.             e.printStackTrace();  
  24.             HibernateManager.rollbackTransaction();  
  25.         }  
  26.     }  
  27.     public static void addPro() {  
  28.         Session session = HibernateManager.openSession();  
  29.         //獲取型別  
  30.         Category c = (Category) session.load(Category.classnew Integer(1));  
  31.         //商品1  
  32.         Product p = new Product();  
  33.         p.setProductname("摩托羅拉v8");  
  34.         p.setRemark("很好的手機");  
  35.         //商品2  
  36.         Product p1 = new Product();  
  37.         p1.setProductname("摩托羅拉A1200");  
  38.         p1.setRemark("非常好的手機");  
  39.           
  40.         //一對多關聯  
  41.         Set<Product> set = c.getProduct() ;  
  42.         set.add(p) ;  
  43.         set.add(p1) ;  
  44.           
  45.         session.save(p) ;  
  46.         session.save(p1) ;  
  47.         try {  
  48.             session.save(p);  
  49.             HibernateManager.closeSession();  
  50.         } catch (Exception e) {  
  51.             e.printStackTrace();  
  52.             HibernateManager.rollbackTransaction();  
  53.        &nb