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

而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. thinkjs2.2中的定时任务

    暂且先讨论定时任务的其中两种实现方法: 1.setInterval() setInterval()可按照指定的周期(毫秒数计)来调用函数或者计算表达式: setInterval()方法会不停的调用该函 ...

  2. html/php/mysql乱码

    1. html通过jquery的ajax传递数据给php. encodeURI("my.php?name=博客园") 2. php接受 urldecode($_GET[" ...

  3. jQuery给动态添加生成的元素绑定事件的方法

    <div id="testdiv">   <ul></ul> </div> 需要给<ul>里面动态添加的<li&g ...

  4. SQL Server 索引结构及其使用(二)

    作者:freedk 一.深入浅出理解索引结构 改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select ...

  5. 【python3】window下 vscode 配置 python3开发环境

    本文以python3.7 为例 一 下载python3 url : https://www.python.org/downloads/windows/ 提示: 安装过程中.记得勾选  添加环境变量 二 ...

  6. Delphi之Code Explorer

    Code Explorer(代码浏览器)是Delphi IDE的特性之一,它大受用户的欢迎.正如其名所表示,Code Explorer用于快速浏览源代码单元.Code Explorer通常位于Code ...

  7. 【大数据系列】在windows下连接linux 下的hadoop环境进行开发

    一.下载Eclipse并安装 二.下载exlipse的hadoop plugin 三.打开Map Reduce视图 Window --> Perspective --> Open pers ...

  8. ios-toolchain-based-on-clang-for-linux

    https://github.com/tpoechtrager/cctools-port.git https://www.embtoolkit.org

  9. Express 4.x Node.js的Web框架----《转载》

    本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种W ...

  10. 关于webpy模板自动HTML转义的问题

    注意: web.py 将会转义任何任何用到的变量,所以当你将 name 的值设为是一段 HTML 时,它会被转义显示成纯文本.如果要关闭该选项,可以写成 $:name 来代替 $name. 如果我们想 ...