hibernate中casecade和inverse的区别

SpotBugs使用 spotbugs命令行参数解析 阅读详情

原文地址:http://www.mkyong.com/hibernate/different-between-cascade-and-inverse/#


Many Hibernate developers are confuse about the cascade option and inverse keyword. In some ways..they really look quite similar at the beginning, both are related with relationship.

Cascade vs inverse

However, there is no relationship between cascade and inverse, both are totally different notions.

1. inverse

This is used to decide which side is the relationship owner to manage the relationship (insert or update of the foreign key column).

Example

In this example, the relationship owner is belong to stockDailyRecords (inverse=true).

Markup
<!-- Stock.hbm.xml -->
<hibernate-mapping>
    <class name="com.mkyong.common.Stock" table="stock" ...>
    ...
    <set name="stockDailyRecords" table="stock_daily_record" inverse="true">
        <key>
            <column name="STOCK_ID" not-null="true" />
        </key>
        <one-to-many class="com.mkyong.common.StockDailyRecord" />
    </set>
    ...

When you save or update the stock object

Java
session.save(stock);
session.update(stock);

Hibernate will only insert or update the STOCK table, no update on the foreign key column. More detail example here…

2. cascade

In cascade, after one operation (save, update and delete) is done, it decide whether it need to call other operations (save, update and delete) on another entities which has relationship with each other.

Example

In this example, the cascade=”save-update” is declare on stockDailyRecords.

Markup
<!-- Stock.hbm.xml -->
<hibernate-mapping>
    <class name="com.mkyong.common.Stock" table="stock" ...>
    ...
    <set name="stockDailyRecords" table="stock_daily_record" 
        cascade="save-update" inverse="true">
        <key>
            <column name="STOCK_ID" not-null="true" />
        </key>
        <one-to-many class="com.mkyong.common.StockDailyRecord" />
    </set>
    ...

When you save or update the stock object

Java
session.save(stock);
session.update(stock);

It will inserted or updated the record into STOCK table and call another insert or update statement (cascade=”save-update”) on StockDailyRecord. More detail example here…

Conclusion

In short, the “inverse” is decide which side will update the foreign key, while “cascade” is decide what’s the follow by operation should execute. Both are look quite similar in relationship, but it’s totally two different things. Hibernate developers are worth to spend time to research on it, because misunderstand the concept or misuse it will bring serious performance or data integrity issue in your application.

Reference

1. inverse=”true” example and explanation
2. cascade example – save, update and delete


最新Linux CSI Tools安装教程(两台主机,一发一收)(监控模式) 无线感知之CSI Tools工具安装,最新在监控模式下采集CSI数据, 阅读详情

相关推荐

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

mysql中的restrict_数据库中restrict和casecade是什么意思?

restrict和cascade都是在外码定义时指定的关键字。外码所指定的字段取值受限制,可以取两种值:所参照主码中出现过的值;可以取空值。外码所指定的字段中数据的增删改是受到外码约束的限制的,在数据增删改时会检查是否满足外码约束条件,当不满足外码的条件时,所做的处理与定义外码时指定的restrict关键字或者cascade关键字有关。下面以一个具体例子说明:设有两张表:student和class...

weixin_42662171的博客 3799

【SystemVerilog项目实践】4.AHB-SRAMC(验证计划)

验证计划

托马斯的博客 3661

数据库中restrict和casecade

空、RESTRICT、NO ACTION 删除:从表记录不存在时,主表才可以删除,删除从表,主表不变。更新:从表记录不存在时,主表菜可以更新,更新从表,主表不变。SET NULL 删除:删除主表时自动更新从表为NULL,删除从表,主表不变。更新:更新主表时自动更新从表值为NULL。CASCADE 删除:删除主表时自动删除从表。更新:更新主表时自动更新从表。cascade:在父表上 update / delete记录时,同步 update / delete掉子表的匹配记录;

jiai032023的博客 2716

边缘智能新篇章:RK3588上YOLOv8姿态估计的轻量化部署与性能优化实战

本文详细介绍了在RK3588平台上部署和优化YOLOv8姿态估计模型的完整流程。通过模型转换、ONNX中间表示和性能优化策略,实现在边缘设备上的高效实时推理,为嵌入式AI应用提供可行的轻量化解决方案。

ik6789012的博客 151

STM32H743 SD卡读写避坑实录:CubeMX配置MDMA给FATFS,我的FreeRTOS项目踩了哪些雷?

本文详细解析了STM32H743在CubeMX配置中结合SDMMC、MDMA与FATFS的实战避坑指南,特别针对FreeRTOS环境下的SD卡读写问题提供了解决方案。从时钟配置到FATFS参数设置,再到DMA缓存维护和FreeRTOS集成技巧,帮助开发者高效解决数据损坏、DMA传输错误等常见问题,提升项目稳定性。

weixin_30878501的博客 494

(很容易懂) hibernate的inverse和casecade的理解——写的很透彻

关于Hibernate中 cascade 与 inverse 的理解。       您买的Hibernate书是哪一 本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。     我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如inverse这属性。   在学习Hibernate的过程中 最不好理解的就是这两个属性了。 (我当初学习H

cugkuan的专栏 1680

SAP FI 提示没有为会计年度0 定义版本2025 GP626

SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。

GAVIN 2490

详解Hibernate中cascade与inverse

学习hibernate的时候对级联关系的概念老是分不清楚,尤其是cascade、inverse傻傻分不清。下面通过例子来简单说明

不能说的秘密的博客 1万+

ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?在place之前需要使analyze_lib_cell_placement命令去检查lib cell在当前的site row/power plan/legalize设置的环境下能够正常place和legalize。下面分享一个脚本去报告pass rate低于2%的lib cell。

m0_61544122的博客 675

[EdgeAI] NXP eIQ 机器学习Toolkit (一):准备篇

eIQ™机器学习(ML)软件开发环境支持在恩智浦EdgeVerse™微控制器和微处理器(包括i.MX RT跨界MCU和i.MX系列应用处理器)上使用ML算法。eIQ ML软件包括称为eIQ Toolkit的ML工作流工具以及推理引擎、神经网络编译器和优化库。............

HowieXue 薛永浩的博客 1万+

sql Cascade 级联关系

实际业务中,我们通常会遇到以下情况: 用户和用户的收货地址是一对多关系,当用户被删除时,这个用户的所有收货地址也应该一* 并删除。 订单和订单中的商品也是一对多关系,但订单被删除时,订单所关联的商品肯定不能被删除。 此时只要配置正确的级联关系,就能达到想要的效果。 级联关系类型: CascadeType.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法 CascadeType.REMOVE:级联删除,当调用.

hi_real_sky的博客 2032

第一部分:VTK基础入门(第1章:VTK简介与概述)

VTK简介与核心特性概述 VTK(Visualization Toolkit)是一个开源的跨平台C++类库,专用于3D计算机图形学、图像处理和科学可视化。由Kitware公司开发,VTK自1993年起源以来,经历了开源化、成熟化和现代化多个发展阶段,现已成为科学可视化的核心工具之一。 VTK的核心特性包括: 管道架构:模块化设计实现数据流管理 丰富的数据支持:处理多边形数据、图像数据等 强大的渲染能力:集成OpenGL,支持多种渲染技术 最新版本VTK 9.4.2增强了现代C++支持,优化了内存管理,并提升

仰望星空的博客 2362

Hibernate:casecade和inverse

这两个属性都用于一多对或者多对多的关系中。而inverse特别是用于双向关系,在单向关系中我们并不需要。 Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系。 Cascade: Cascade属性的可能值有 all:所有情况下均进行关联操作,即save-update和delete。 none: 所有情况下均不进行关联操作。这是默认值。 save-up...

iteye_7839的博客 222

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hibernate inverse cascade详解

Hibernate中Inverse和Cascade的区别2008-05-18 18:11        一直对两者之间的区别不是很清楚,认为既然Inverse似乎具有Cascade的某些特性,比如删除。今天实践了一下才知道,两者是截然不同的:Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重

xenron的专栏 1815

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hibernate中cascade与inverse属性详解【转】

Hibernate中cascade与inverse属性详解 关于Hibernate中 cascade 与 inverse 的理解。 您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。 我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如inverse这属性。 在学习Hi...

song2012的专栏 167

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于hibernate中invers跟cascade的一点看法

下午动手配了下一个简单的双向一对多关系 一下子居然想不起invers跟cascade的区别了 看了网上那些东西觉得更迷茫了 说invers是维护2个表之间的关系的 但是cascade也是2个表的级联操作 咋一看觉得没区别 后面慢慢想明白了 invers应该是只维护表跟表的关系 跟实际数据操作没关系 而cascade是指跟数据的实际操作有关系 跟表结构没关系 说通俗点就是 比

放纵的青春的专栏 962

【SSH框架/国际物流商综平台】-04 Shiro安全框架( 认证、授权)hibernate关联关系 (一对多、多对一,多对多) casecade/inverse Hibernate.cfg.xml

1.知识回顾 a)搞清hibernate配置对象的关系 绝招:拿范例来背,权限架构,部门+用户+用户扩展信息+角色+模块 b)部门的自关联 name实体中的配置的对象属性 class对应实体对象,写全路径cn.itcast.jk.domain.Dept有时简写Dept,必须配置package column对于数据库表中的外键 ### C)部门和用户,一对多 Hibernate.cfg.xml <!- 加载映射文件 <mapping r^sQurcE=r’cn/itcast/jk/doma

alwarse 296

Hibernate详细教程

一、搭建Hibernate环境 1.在src目录下创建hibernate.cfg.xml配置文件 PS:文件的名字不能改! &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Confi...

weixin_33862514的博客 105

Hibernate中cascade作用

为什么80%的码农都做不了架构师?>>> ...

weixin_34194551的博客 2603

sql中的CASCADE和RESTRICT

CASCADE为连锁删除,RESTRICT为约束删除,即没有对本列的任何引用时才能删除。 例:alter table Bank_Equipment    add constraint FK_BANK_EQU_BANDEQUME_BANK foreign key (Bank_id)       references Bank (Bank_id)       on delete restric

mayapinggo的博客 1万+

Hibernate的casecade与inverse探究

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33826268的博客 111

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

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

weixin_34100227的博客 266

谈谈Hibernate中inverse的属性

先看一下这个词的翻译: inverse adj.相反的;逆向的;倒转的 n.相反;倒转;相反的事物 vt.使倒转;使颠倒 乍一看好像跟我们的hibernate里边的inverse属性没有多大的联系…听说是spring里边有个控制反转也是用到这个词,学到再说 好吧我们开始正题 1、inverse是什么? inverse在hibernate中我的理解是:是否放弃外键维护权… inverse有两种值:...

tiaopimao3185的博客 605

【7.3】级联操作cascade

什么是casecade? cascade 级联:让操作级联到子实体 save-update:保存和更新多的一端数据时,一的一端的数据可以一起保存和更新 none:不级联 delete:删除级联-不能在多的一端使用 all:表示所有操作都级联 详解: 1、 cascade时级联操作,使得在操作一端数据时,可以级联操作被关联的另外一端的数据。 2、 在多对一的...

weixin_30808575的博客 613
上一篇: hibernate集合映射inverse和cascade详解
下一篇: 关系代数中的除法运算
wakeupwakeup
博客等级 码龄11年 9粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值