Hibernate的Cascade——级联操作

在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当

前实体时,针对当前实体的操作会影响到相应配置的关联实体。比如针对当前实体进行保存操作时,会同时保存

与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了

Cascade属性。

而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作,具体Cascade的取值则

分为多种,如all,表示针对所有操作都会进行级联,如save-update,表示针对插入和修改会进行级联操作。对

于Cascade的取值问题需要根本具体需求而定,这里没有一个统一的标准应该取怎样的值符合你的需要。从现实

需求分析来决定应该如何取值。

all ::             所有情况下均进行关联操作。
none:             
所有情况下均不进行关联操作。这是默认值。
save-update:      
在执行save/update/saveOrUpdate时进行关联操作。
delete:           
在执行delete时进行关联操作。

all的意思是save-update + delete

本文转自博客:http://blog.sina.com.cn/s/blog_67aaf4440100wjm7.html

时间: 2024-07-29 12:13:31

Hibernate的Cascade——级联操作的相关文章

Hibernate(八)__级联操作、struts+hibernate+接口编程架构

级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生. 再比如: bbs项目主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作. 案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生. 首先我们在配置文件中修改: <

【Hibernate学习】——级联操作

级联策略:负责控制关联两端对象到对象的级联关系的操作,包括更新.删除等,也就是说对一个对象进行更新.删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除. 在前面用了抓取策略之后,后面试了一下级联操作的注解:cascadeType.MERGE方式 @OneToOne(cascade={CascadeType.MERGE}) @JoinColumn(name="company_id") publicCompany getCompany() { return

hibernate(六) cascade(级联)和inverse关系详解

序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也看不懂其中的关系,所以我自己写博文的时候,会尽量用通俗通俗在通俗的语言去描述一个概念,希望能尽自己的力量去帮助你们理解.光看我的是不行的,最关键的是要自己动手去实践一遍,能得出一样的结论,那就说明懂了,在我不懂的时候,我就去自己实现它,一次次尝试,慢慢的就总结出规律了. --WH 一.外键 我为什么

Hibernate多对多级联操作

表与表之间关系回顾(重点) 2 多对多 (1)订单和商品关系,一个订单里面有多个商品,一个商品属于多个订单 (2)用户和角色多对多关系 - 用户: 小王.小马.小宋 - 角色:总经理.秘书.司机.保安 ** 比如小王 可以 是总经理,可以是司机 ** 比如小宋 可以是司机,可以是秘书,可以保安 ** 比如小马 可以是 秘书,可以是总经理 -          一个用户里面可以有多个角色,一个角色里面可以有多个用户 (3)多对多建表:创建第三张表维护关系 Hibernate多对多操作 多对多映射配

Hibernate的多表操作

一.一对多 1.表设计:主外键关联 2.持久类设计:一方持有多方的set集合,多方持有一方的对象 3.配置文件:一方配置级联操作;一方放弃外键维护 二.多对多关系: 1.表设计:使用中间表来映射关系,各添加一个外键字段 2.持久类设计:互相拥有对方的一个set集合 3.配置文件:默认双方都会维护中间表;如果双方都设置了对方的数据,必须有一方主动放弃外键维护(inverse="true"),否则会造成向中间表中重复添加数据,出现异常. 三.多表查询: 对象导航的延迟加载(lazy属性)使

Hibernate入门(五)hibernate的级联(cascade)表操作

存在的意义 在实际做项目的时候,经常会遇到表与表之间的关联操作,比如一个班级里面有多个学生,一个部门有多个职员,这是一对多的关系,还有例如一个主题有一个作者,这是一对一,等,这时候就必须涉及到表的关联操作 一对多的单项关联 什么意思呢? 比如一个班级里面有多个学生,班级表关联学生表,属于一对多,但是学生表并不关联班级表,这个就属于单项的关联 只能从classes找到student,所以为单项关联 class.hbm.xml中的配置 <set name="students" cas

【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作

这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn.itcast.hibernate.domain; public class Employee { private int id; private String name; private Department depart; public int getId() { return id; } pu

Hibernate级联操作解密(inverse和cascade)

总结: Cascade:对级联操作进行限制,有如下几个参数: all : 所有情况下均进行关联操作.  none:所有情况下均不进行关联操作.这是默认值.  save-update:在执行save/update/saveOrUpdate时进行关联操作.  delete:在执行delete时进行关联操作. Inverse:在一对多模型中,只能在一的一方设置,inverse的作用就是在级联发生后,会再次更新子表数据的外键为主表的主键.确保子表外键不会为空. 下面演示一个班级学生的例子(一对多): 班

Hibernate级联操作和加载机制(二) cascade and fetch

上一篇介绍了Hibernate持久化对象时候的级联操作,本篇介绍读取时候的级联操作. 还是用上一篇的例子,一份问卷有多个问题,但是每个问题只能属于一份问卷.我们先看测试用例: @Test public void testReadFromQuestionnaire(){ Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); Questionnaire qn = (Questionnaire