hibernate学习之inverse篇

 

1.在映射一对多的双向关联关系时,应该在”多“方把inverse属性设置为true,这样可以提高应用的性能

如Customer:Order为1:N双向关联,将Customer的Set的inverse设置为true,表示Customer与Order之间的关联关系由Order端来维护,如customer.getOrders().add(o)不会更新Customer与Order之间的关联关系,而order.setCustomer(o)才会更新Customer与Order之间的关联关系。

 

<?xml version="1.0" encoding="utf-8"?>   
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
<!--    
    Mapping file autogenerated by MyEclipse - Hibernate Tools   
-->   
<hibernate-mapping>   
    <class name="domain.Customer" table="customers" catalog="blogday">   
        <id name="id">   
            <column name="id" />   
            <generator class="native"></generator>   
        </id>   
        <property name="name">   
            <column name="name" length="20" />   
        </property>   
        <set name="orders" lazy="true" inverse="true" cascade="all">   
            <key column="customer_id" />   
            <one-to-many class="domain.Order" />   
        </set>   
    </class>   
</hibernate-mapping> 

 

2.在建立两个对象的双向关联时,应该同时修改关联两端对象的相应属性 

 

//customer.getOrders().add(order1); //建立customer到order的关联

 order.setCustomer(customer);//建立order到customer的关联

   虽然没建立customer到order的关联,但是hibernate还是会按照order状态变化同步更新数据库

customer.getOrders().add(order1); //建立customer到order的关联

 //order.setCustomer(customer);//建立order到customer的关联

   如果没建立order到customer的关联,hibernate不会按照customer状态变化同步更新数据库

 

    为了保证程序的健壮性则应该如下设置:

customer.getOrders().add(order1);//建立customer到order的关联


  order.setCustomer(customer);//建立order到customer的关联

 

 

具体参考:http://www.iteye.com/topic/156289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值