首页 > 代码库 > (十一)Hibernate中的多表操作(1):单向一对多

(十一)Hibernate中的多表操作(1):单向一对多

技术分享

  



一、单向一对多()

  • 案例一(用XML文件配置): 一个会员(Member)可以有多个订单(Order),加载会员的时候自动加载订单,但是订单无法查看会员信息,
  public class Member  
    {  
        private String id;  
        private String name;  
        private Integer age;  
        private Set<Order> orders = new HashSet<Order>();    //该Set集合里存放的是“多”方,加载会员就会加载订单。
        ......  
    }  
 public class Order  
    {  
        private Integer id;  
        private String name;  
        private String num;  
        private String memberId;  // 外键,对应Membern类的主键即id
        ......  
    }  
  • 单向一对多的映射文件 :
 Member.hbm.xml:  
    <hibernate-mapping package="org.louis.domain">   
        <class name="Member" table="TEST_MEMBER">  
            <id name="id" column="ID">  
                <generator class="uuid.hex"></generator>  
            </id>  
            <property name="age" column="AGE"></property>  
            <property name="name" column="NAME"></property>  
            <!--set元素,就是定义一个集合,它的name属性值是对应的POJO中的相关属性名称-->  
            <set name="orders" cascade="all">  
                <key column="MEMBER_ID"></key><!--指定“多”的一段的外键,与“一”端得主键相关联,这里的column=“MEMBER_ID”是指数据库中的字段,而非bean中的属性-->  
                <one-to-many class="Order"/><!--指定了“多”端对应的类-->  
            </set>  
        </class>  
    </hibernate-mapping>  
Order.hbm.xml:  
    <hibernate-mapping package="org.louis.domain">  
        <class name="Order" table="TEST_ORDER">  
            <id name="id" column="ID">  
                <generator class="native"></generator>  
            </id>  
            <property name="name" column="NAME"></property>  
            <property name="num" column="NUM"></property>  
            <!--外键-->  
            <property name="memberId" column="MEMBER_ID"></property>  
        </class>  
    </hibernate-mapping>  

 

  • 本例的关联关系时单向,且关联关系由Member来维护(),而“多”的一方并不知道它自己和Member有任何关系。

 

(十一)Hibernate中的多表操作(1):单向一对多