`
only_java
  • 浏览: 110066 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics