hibernate的Cascade和Inverse

cascade中文意思是“级联”,在程序中体现的就是:  如果一个实体类对象中含有另一个实体类对象的引用,我们就可以配置级联操作,相当于数据库中的外键操作的cascade。在配置cascade=“save_update”情况下,如果保存了其中一个对象,那么他里面包含的关联对象也就被存入数据库中了,当然这里仅仅是存入数据库当中。此时跟这个对象还没有发生关系,也就是在数据库表中外键还没有值。现在inverse属性该上场了,默认情况下inverse=“false”表明,对象间的关系“不是由对方来维护”,也就是我要维护对象间的关系,怎么维护了,如果是多对一那么就是生成update语句,如果是多对多就是在中间表中用insert插入语句。很简单。如果把inverse配置成为true,那么就表示:“关系翻转---这种关系不是‘我’来维护了,即使‘我’代表的对象中有另一个对象,或者另一些对象”,这些都不关我什么事了。

可以这么理解,cascade表示在对一个对象操作的时候,是否会‘动’其包含的对象。而inverse表示,我会不会维护对象间的关系(对应在数据库中,就是我是不是会更新记录(多对一),我是不是会插入记录(多对多))

还有一点inverse属性只会在集合下出现,其他地方不会出现,因为hibernate默认在(多对一)多的那一方维护关系比较省力。cascade默认在关联关系下都会存在。

 

cascade的取值有以下几种:

 

none:在保存,删除或修改当前对象时,不对其附属对象(关联对象)进行级联操作。它是默认值。
save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,游离对象)。

delete:在删除当前对象时,级联删除附属对象。
all:所有情况下均进行级联操作,即包含save-update和delete操作。
delete-orphan:删除和当前对象解除关系的附属对象。

all-delete-orphan:包含all和delete-orphan的行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值