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
分享到:
相关推荐
彻底明白Hibernate中的Inverse
JavaEE学习笔记之Hibernate表关系之一对多(inverse详解)
Hibernate中Cascade和inverse的区别,讲解的很详细
hibernate集合映射inverse和cascade详解.txt
Hibernate中cascade与inverse属性详解
hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
Hibernate中cascade和inverse应用
hibernate inverse和cascade的详细讲解,相当详细全面的对inverse和cascade区别和用法的讲解
hibernate inverse 个人总结
Hibernate中Inverse和Cascade的区别.html
于Hibernate中 cascade 与 inverse 的理解。 您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。...在学习Hibernate的过程中最不好理解的就是这两个属性了
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
Hibernate fetch lazy cascade inverse 关键字
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多的一端来维护关联关系。 加上inverse="true"这个属性,就可以强制在多的一端维护关系了。
关于 Hibernate 的学习总结ppt 内包含了 inverse 的看法与eclipse安装 Hibernate 插件
Hibernate中cascade和inverse的相关
hibernate中inverse作用。我是一个Hibernate的初学者,前两天刚刚研究了一下inverse属性,有所心得。故把自己的小例子贴出来,与大家共享。
hibernate注解的方法的详解