一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
来源:互联网 发布:软件开发人员等级 编辑:程序博客网 时间:2024/05/21 17:25
Hibernate仅仅按照主控方对象的状态的变化来同步更新数据库。按照原来的映射文件,people.getAddresses().add(address),即主控方对象的状态发生了改变,因此数据库会跟着对象状态的变化来同步更新数据库;而address.setPeople(people),即被控方对象的状态发生了改变,它是不能触发对象和数据库的同步更新的。
(实例1):
举个最简单的一对多父子关系。那么代码就写成:
映射文件配置:
set中inverse="true",说明父子关系只在多的一端(Child)维护。所以只会发出2个insert语句。
注意:{many-to-one}总是设成“inverse=false”的,而且这个属性在Mapping中是不存在的!
这样运行的下来的结果就是:如果将set中的inverse设为true,那么会发出3条sql语句,前2条是insert语句,后1条是update语句用来维护parent和child类的父子关系。
当然,假如c.setParent(p)注释掉(破坏了父子关系),结果就变成了:
===================================================
(实例2):
一个Person可以参加多个Event,一个Event有多个Person参加。映射文件如下:
inverse=true的含义: 由双向关联另一方维护该关联,己方不维护该关联(只能进行查询操作)。在上述代码中,由Person方维护该<many-to-many>关系,示例代码如下(以向Person参与的Event中加入新的Event为例):
要注意的一点:在双向关联的关系中,映射的column(和table)的值要一致(即要用相同的表名和列名),不然设置为inverse="true"的这方将失去这个双向关系,而变成了一个单向关联。
二、Inverse和Cascade的比较
Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true。
Cascade:负责控制关联对象的级联操作,包括更新、删除等,也就是说对一个对象进行更新、删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除。
举例说明区别:删除“一”那一端一个对象O的时候,如果“多”的那一端的Inverse设为true,则把“多”的那一端所有与O相关联的对象外键清空;如果“多”的那一端的Cascade设为Delete,则把“多”的那一端所有与O相关联的对象全部删除
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
- Hibernate(八)——Hibernate中inverse的用法
- 一口一口吃掉Hibernate(七)——继承映射
- 一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别
- 一口一口吃掉Struts(八)——四种forward
- 一口一口吃掉Struts(八)——四种forward
- 一口一口吃掉Hibernate(一)——使用SchemaExport生成数据表
- 一口一口吃掉Hibernate(四)——多对一单向关联映射
- 一口一口吃掉Hibernate(五)——一对多单向关联映射
- 一口一口吃掉Hibernate(六)——多对多关联映射
- 一口一口吃掉Hibernate(三)——Hibernate给表和字段设置前后缀及分隔符
- Hibernate中inverse的用法
- hibernate中inverse的用法
- hibernate中inverse的用法
- hibernate中inverse的用法
- hibernate中inverse的用法
- 前端基础四 表格
- Win10默认开启数字小键盘的方法
- noip2013day2T3华容道
- c风格的字符串
- C语言atoi()函数:将字符串转换成int(整数)
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
- FPGA基础知识8(FPGA静态时序分析)
- UEFI启动的windows下安装Ubuntu双系统(绝对可行)
- atoi函数简单实现
- iOS 给控件 画边框
- Sphinx 在 windows 下安装使用
- 非常好理解的遗传算法的例子
- Objective-C——深复制和浅复制
- Dubbo详细介绍与安装使用过程