这两个属性都用于一多对或者多对多的关系中。

而inverse特别是用于双向关系,在单向关系中我们并不须要。

 
Cascade代表是否运行级联操作,Inverse代表是否由己方维护关系。
 
Cascade:
 
Cascade属性的可能值有
    all: 全部情况下均进行关联操作,即save-update和delete。

    none: 全部情况下均不进行关联操作。

这是默认值。

    save-update: 在运行save/update/saveOrUpdate时进行关联操作。

    delete: 在运行delete 时进行关联操作。
    all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比方在一个一对多的关系中。Student包括多个book。当在对象关系中删除一个book时,此book即成为孤儿节点。

 
Inverse:
 
Inverse属性的可能值是true或者false。默觉得false:
 
     false代表由己方来维护关系,true代表由对方来维护关系。

在一个关系中,仅仅能由一方来维护关系。否则会出问题(解疑中会讲到)。同一时候也必须由一方来维护关系。否则会出现两方互相推卸责任,谁也无论。

 
1、cascade(级联)
   引用了《深入浅出 Hibernate》:级联(cascade)在Hibernate映射关系中。它指的是当主控方运行操作时,关联对象(被动方)是否同步运行同一操作,如主控方对象调用save-update或delete 方法时。是否同事对关联对象(被动方)进行save-update或delete。

  这里所说的主控方按我理解指的是:比方,User 类中有一Address属性。User和Address 是一对多的关系,然后当user.save(address);的时候,user就是主控方了。
 
2、inverse(控制方向反转)
   引用了《深入浅出 Hibernate》:在Hibernate 语义中,inverse指定了关联关系中的方向。关联关系中,inverse=false 的为主动方,由主动方负责维护关联关系。

   这里所说的关联关系按我理解指的是:为了维持两个实体类(表)的关系。而加入的一些属性,该属性可能在两个实体类(表)或者在一个独立的表里面,这个要看这两方直接的相应关系了:
ps:这里的维护指的是当主控放进行增删改查操作时,会同一时候对关联关系进行相应的更新。
   一对多:该属性在多的一方。应该在一方的设置 inverse=true 。多的一方设置 inverse=false(多的一方也能够不设置inverse属性。由于默认值是false),这说明关联关系由多的一方来维护。原因:该关联关系的属性在多的一方的表中。在维护关联关系的时候在多的一方easy维护。
   多对多:属性在独立表中。

在随意一方设置inverse=true,还有一方inverse=false;原因:假设两个多设置为true 的话。表示两方都对关联关系表(独立表)进行了相同的维护,事实上仅仅要一方维护即可了,效率上来说,这样设置是合理点的。

   一对一:事实上是一对多的一个特例,inverse 的设置也是一样的。主要还是看关联关系的属性在哪一方,这一方的inverse=false。

   多对一:也就是一对多的反过来,没什么差别。

hibernate中cascade和inverse的更多相关文章

  1. 具体解释Hibernate中cascade与inverse

    学习hibernate的时候对级联关系的概念老是分不清楚,尤其是cascade.inverse傻傻分不清.以下通过样例来简单说明. 准备工作: 首先创建数据库,新建两张表: 教室表classes (字 ...

  2. 转 Hibernate中cascade和inverse的作用

    Inverse和cascade是Hibernate映射中最难掌握的两个属性.两者都在对象的关联操作中发挥作用.1.明确inverse和cascade的作用inverse 决定是否把对对象中集合的改动反 ...

  3. Hibernate中cascade和inverse的作用

    Inverse和cascade是Hibernate映射中最难掌握的两个属性.两者都在对象的关联操作中发挥作用.1.明确inverse和cascade的作用inverse 决定是否把对对象中集合的改动反 ...

  4. Hibernate中cascade作用

    Hibernate中cascade作用 只有“关系标记”才有cascade属性: 一个操作因级联cascade可能触发多个关联操作.前一个操作叫“主控操作”,后一个操作叫“关联操作”. cascade ...

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

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

  6. java之hibernate之 cascade和inverse

    1.Cascade是级联动作,在many_to_one中如果使用cascade可以级联操作关联对象,如下代码可以级联保存Category对象. 在Book的映射文件设置 <many-to-one ...

  7. Hibernate中cascade属性的区别

    xml对于集合的级联操作属性cascade的取值可以是: none: 不级联操作,默认为none save-update:针对的是当对当前对象进行save或update操作时,要对想关联的对象进行sa ...

  8. Hibernate中的inverse和cascade属性

    Hibernate中的inverse和cascade属性 inverse的值有两种,"true"和"false".inverse="false&quo ...

  9. hibernate中的cascade和inverse

    以Student和class为例,一个Student对应一个class,一个class对应多个Student. Student.hbm.xml <?xml version="1.0&q ...

随机推荐

  1. NUC972裸机调试步骤

    .将开发板设置成USB启动.开发板拨码开关与启动方式设置对应如下: 其中PA1 ,PA0对应S1和S0 上电或复位,使开发板从USB启动.开启NuWriter,选择正确的芯片型号,按下“Continu ...

  2. linux下删除大量小文件

    当目录下文件太多时,用rm删除文件会报错:-bash: /bin/rm: Argument list too long提示文件数目太多.解决的办法是使用如下命令:ls | xargs -n 10 rm ...

  3. IOS设计模式第四篇之装饰设计模式的类别设计模式

    装饰设计模式 装饰设计模式动态的添加行为和责任向一个对象而不修改他的任何代码.他是你子类化修改类的行为用通过另一个对象的包装的代替方法. 在Objective-c里面有很多这种设计模式的实现,像cat ...

  4. Word 2010 制作文档结构之图标自动编号设置

    注意: 使用图片自动编号时,如果文档标题使用的样式是通过“将所选内容保存为新快速样式”所生成的样式,则图片自动编号不会生效 因此设置标题样式时,不要 新建样式,直接使用word预设的“标题 1”样式和 ...

  5. 题目1010:A + B(字符串转数字)

    题目链接:http://ac.jobdu.com/problem.php?pid=1010 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  6. 题目1029:魔咒词典(map使用以及字符串读取函数总结)

    题目链接:http://ac.jobdu.com/problem.php?pid=1029 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus // // ...

  7. [转]13 Hours: The Secret Soldiers of Benghazi

    转:http://www.imfdb.org/wiki/13_Hours:_The_Secret_Soldiers_of_Benghazi The following weapons were use ...

  8. Unity3D Android动态反射加载程序集

    这种办法在iOS下是不让用的,只能在Android下用.用起来也很方便了. 1.先创建一个c#工程,引用到的UnityEngine.dll在Unity的安装目录里找吧 2.将编译的dll放入Unity ...

  9. linux编码问题小节

    今天又碰到了难缠的python编码问题,首先主要还是linux操作系统中的编码问题. 无论怎么样,我都没办法在linux的vim中利用中文输入法打出中文? vim中的set encoding,set ...

  10. DragonBones龙骨骨骼中的自定义事件(另有声音、动画事件)

    参考: DragonBones骨骼动画事件系统详解 一.在DragonBones中添加自定义事件帧 动画制作时 时间轴拉到最下面有一个事件层,添加一个事件帧 左边属性面板定义自定义事件 二.Egret ...