天生我才

常用链接

统计

最新评论

Hibernate中映射一对多关联

    在域模型中,类与类之间最普遍的关系就是关联关系.以客户(Customer)和订单(Order)的关系为例,一个客户能发出多个订单,而一个订单只属于一个客户.从Order到Customer的关联是多对一关联,每个Order对象都会引用一个Customer对象,因此在Order类中应该定义一个Customer类型的属性.
    从Customer到Order是一对多关联,意味着每个Customer对象都会引用一组Order对象,因此在Customer类中应该定义一个集合类型的属性,来引用所有Order对象.
   
多对一的单向关联关系:
      customer.hbm.xml
            <hibernate-mapping>
                 <class name="Customer"  table="CUSTOMERS"> 
                     <id>
                         …………
                    </class>
             </hibernate-mapping>
   

        order.hbm.xml
            <hibernate-mapping>
                 <class name="Order"  table="ORDER"> 
                     <id>
                         …………
                    <many-to-one name="customer" column="CUSTOMER_ID" class="Customer" not-null="true"/>
                    </class>
             </hibernate-mapping>
      
级联保存和更新
          在<many-to-one>中加入cascade="save-update" 默认为none        


一对多的双向关联关系,从内存中读取比数据库中快,所有针对大量的根据客户查询订单的操作,需要使用双向。
 
 customer.hbm.xml
            <hibernate-mapping>
                 <class name="Customer"  table="CUSTOMERS"> 
                     <id>
                         …………
                    <set name="orders" cascade="save-update" inverse="true">     //根据Orders变化来同步两张表
                         <key column="CUSTOMER_ID"/>                                      //cascade="true"级联删除,删除了客户信息,订单也自动删除
                          <one -to-many class="Order">
                   </set>
                    </class>
             </hibernate-mapping>
   

        order.hbm.xml
            <hibernate-mapping>
                 <class name="Order"  table="ORDER"> 
                     <id>
                         …………
                    <many-to-one name="customer" column="CUSTOMER_ID" class="Customer" not-null="true"/>
                    </class>
             </hibernate-mapping>

        
         

posted on 2005-09-26 21:24 天生我才 阅读(318) 评论(0)  编辑  收藏 所属分类: Hibernate


只有注册用户登录后才能发表评论。


网站导航: