cascade : 

  不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例,此标签下都有一个cascade属性:

  Grade.hbm.xml中:

<set name="students" cascade="save-update">
<key column="gradeId" ></key>
<one-to-many class="Student"/>
</set>

Student.hbm.xml中:

<many-to-one name="grade" class="Grade" column="gradeId" not-null="true" cascade="save-update"></many-to-one>

cascade表示级联:让操作级联到子实体,常见的有以下几个取值:

save-update:在保存和当前一端数据时,另一端数据可以一起保存.如上,假如Student.hbm.xml中设置了 cascade="save-update",那么在保存数据时,只需要保存Student就可以,hibernate会自动把它相关联的另一端的Grade的数据保存起来.

none:不级联(不写就是默认不级联)

delete:删除级联(不能在多的一端执行)

all:表示所有操作都级联

注意:

  1. cascade是级联操作,使得在一段操作数据时,可以级联操作在另外一端的数据
  2. 在多对一的关系中,多的一端不能操作级联为delete,一般在多的一端设为save-update
  3. 在一对多的关系中,如果一的一端设置为delete,多的一端不能指明外键为空

inverse:

  在一的一端(Grade)的<set>标签中有一个inverse属性,:

<set name="students" inverse="false">
<key column="gradeId" ></key>
<one-to-many class="Student"/>
</set>

inverse属性表示由谁来管理关联关系,默认为false.

inverse="false":表示双方都可以管理关联关系,谁管理关系谁来维护,如果都管理了则双方都可以维护,当关系由多的一端(Student)来维护时,效率更高.因为如果关系由一的一端(Grade)来维护时,会多执行几个Update语句.

inverse="true":表示由多的一端来管理关联关系,不管一的一端是否管理关系,都由多的一端来维护关系.建议设为"true".

  那么什么是管理关系呢? 假设Student中,执行了setGrade()方法时,将Grade实例赋给了Student实例,就表示Student类管理了关系,这到底什么意思呢?其实很简单,假如保存数据的时候,我们保存Student信息时,引用了Grade,那么保存时会维护Student和Grade的关系,即会在Student中存在Grade的外键值,否则,Student的外键值是为null的(当然前提是我们没有设置not-null="true"),

hibernate笔记--cascade级联以及inverse属性的更多相关文章

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

    序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...

  2. Hibernate学习(六)———— cascade(级联)和inverse关系详解

    序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...

  3. cascade(级联)和inverse关系详解

    序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...

  4. Hibernate课程 初探一对多映射4-1 inverse属性

    1 <Set>节点的inverse属性默认由one方来维护(默认值为false).将inverse属性修改为true则由多方来维护.

  5. Hibernate的Cascade——级联操作

    在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...

  6. Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

    1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...

  7. Hibernate中inverse属性与cascade属性

    Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性.对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现 ...

  8. Hibernate第五篇【inverse、cascade属性详解】

    前言 上一篇博文已经讲解了一对多和多对一之间的关系了,一对多和多对一存在着关联关系(外键与主键的关系).本博文主要讲解Inverse属性.cascade属性.这两个属性对关联关系都有影响 Invers ...

  9. hibernate中cascade属性以及inverse属性

    级联操作 cascadecascade的常用属性值 none 默认值 不做任何变动 save-update 保存或修改 delete 删除 all 包含save-update 和delete等行为 c ...

随机推荐

  1. 关于Delphi错误:Cannot make a visible window modal

    Delphi的fsMDIChild类型的窗体是不能使用ShowModal的,否则会弹出"Cannot make a visible window modal"异常, 但是把fsMD ...

  2. 为什么要重写hashcode() 方法

    Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重复:后者元素无序,但元素不可重复. 那么我们怎么判断两个元素是否重复呢? 这就是 ...

  3. 10000 Reasons(Matt Redman)

     这是一首很感动的主内歌曲,听了无首次,还是很感动,这里把歌词贴出来,一方面是为了记忆歌词,另一方面是为以后怀念记忆.(20:44:38) Bless the lord,oh my soul oh m ...

  4. Sort简单排序

    List<T> 类型排序: public List<ProductionMaterialModel> OrderBybom(List<ProductionMaterial ...

  5. BrnShop mvc3升级mvc4

    此文来自:http://www.cnblogs.com/fumj/p/3588517.html 手工升级ASP.NET MVC 3项目: 一.安装ASP.NET MVC 4 二.升级ASP.NET M ...

  6. 使用Gemini构建自己的IDE

    你的项目中的领域特定语言是否需要自己的IDE?Visual Studio Shell是选择之一,但是过于庞大不易部署,而且很难使用.Tim Jones的Gemini框架是一个轻量级替代方案. Gemi ...

  7. UI控件(UISegmentedControl)

    @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray* segmentArray = [[ ...

  8. 备忘-Android ViewPager 子页监听事件

    @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mListViews ...

  9. 朴素贝叶斯(NB)复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 贝叶斯分类算法是统计学的一种分类方法,其分类原理就是利用贝叶斯公式根据某 ...

  10. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...