级联保存和更新
当hibernate持久化一个临时对象时,在默认的情况下,不会自动持久化其关联的其他临时对象.如果希望同时持久化其相关的的其他临时对象,则可以把<many-to-one>的cascade属性值改为"sava-update",其默认值"none".
例如:当使用:
<many-to-one
name="customer"
cloumn="CUSTOMER_ID"
class="mypack.Customer"
/>
tx=session.beginTransaction();
Customer customer=new customer("jack");
//session.save(customer);//不保存customer对象,customer为临时对象
Order order1=new Order('jack01',customer);
Order order2=new Order('jack02',customer);
session.save(order1);//将抛出异常
session.save(order2);
当hibernate清理(flush,按持久化对象的状态来更新数据库)缓存中所有持久化对象时,抛出TransientObjectException异常.内存中的持久化状态和数据库记录不一致导致了这一异常,内存中order1对象引用了customer,而在数据库中CUSTOMER_ID字段值为null.
当使用
<many-to-one
name="customer"
cloumn="CUSTOMER_ID"
class="mypack.Customer"
cascade="save-update"
/>
tx=session.beginTransaction();
Customer customer=new customer("jack");
//session.save(customer);//不保存customer对象
Order order1=new Order('jack01',customer);
Order order2=new Order('jack02',customer);
session.save(order1);//将通过cascade属性值”save-update“进行级联更新
session.save(order2);
总结(引用某博友的内容):
Save-update 保存、更新Customer会同步更新Order.
Delete 同步删除
All 包含save-update和delete操作,另外调用当前对象的evice或者lock时,对关联对象也调用相应方法。
Delete-orphan 删除所有和当前对象解除关联关系的对象。
All-delete-orphan 当关联双方为父子关系是(父亲控制孩子的持久化生命周期),如果父方删除,子方自动删除(同delete),如果子方无父亲,子方应删除。包含Delete和all-orphan的行为。
分享到:
相关推荐
\hibernate_配置cascade_及all-delete-orphan.doc
hibernate inverse和cascade的详细讲解,相当详细全面的对inverse和cascade区别和用法的讲解
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
Hibernate cascade (级联).docHibernate_cascade(级联).doc
Hibernate中Cascade和inverse的区别,讲解的很详细
hibernate cascade 测试demo
hibernate中一对一,一对多,多对多关系的配置,延迟加载,cascade,inverse hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
Hibernate中cascade和inverse应用
Hibernate中cascade与inverse属性详解
于Hibernate中 cascade 与 inverse 的理解。 您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。 我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如...
Hibernate中Inverse和Cascade的区别.html
NULL 博文链接:https://dreamzhong.iteye.com/blog/1273157
深入理解hibernate many-to-one(多对一)及 cascade(级联).
Hibernate fetch lazy cascade inverse 关键字
hibernate集合映射inverse和cascade详解.txt
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) 级联在编写触发器时经常用到,触发器的作用是当 主控表信息改变时,用来保证其关联表中数据同步更新。若对触发器来修改或删除关联表相记录,必须...
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
Hibernate环境搭建 Hibernate主要接口 Hibernate主要映射 Hibernate的lazy、fetch、cascade等策略 Hibernate性能优化
haarcascades\haarcascade_eye.xml haarcascades\haarcascade_eye_tree_eyeglasses.xml haarcascades\haarcascade_frontalface_alt.xml haarcascades\haarcascade_frontalface_alt2.xml haarcascades\haar...