hibernate mysql 外键_hibernate cascade inverse 与mysql外键约束

mysql外键约束:外键约束是对主表更新和删除被关联键时的约束,这里从表可以随意进行更新和删除外键,而主表不能随意,如果主表要更新或删除被关联键,而这个键与从表中的外键已经关联,那需要参考从表创建外键时设定的更新删除策略,包括四种:restrict(如果从表有相关数据,那主表不能更新或删除数据)、cascade(从表相关数据行一同更新或删除)、set null(从表相关数据行对应外键列为null)、no action(同restrict);

从表插入新数据时,从表中的外键值在主表中没有对应值时不能进行插入,或者可以插入null;

在建立外键时,从表中的外键可以引用主表中有索引的列,注意不一定非得是主表的主键;

两个表之间可以建立多个外键,比如两个表A和B, B表中可以建立多个外键分别引用到A表中的不同列,与此同时,A表中也可以创建多个外键引用到B表中的不同列,外键的添加没有太多限制,甚至两个列可以互为外键,但这貌似没什么意义,而且插入时只能插入null。

hibernate cascade:

它是两个表的级联操作,是由hibernate完成,与外键约束没有太大关系。无论在哪张表设置cascade,当该表被操作时,都会根据cascade的设置去对另一张表进行相应的操作。

cascade关系有以下几种

all: 所有情况下均进行关联操作,即save-update和delete。

none: 所有情况下均不进行关联操作。这是默认值。

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

delete: 在执行delete 时进行关联操作。

all-delete-orphan:当一个节点在对象图中成为孤儿节点时(从表中的一条数据不再与主表有关联时,即外键值为null时),删除该节点

hibernate inverse:(双向关联中使用,为的是不让同一件事做两遍而导致性能下降的问题)

1、inverse的权限在cascade之上,意思就是cascade是否有用,还得看inverse这个属性

2、inverse的作用:在映射关系中,让其中一方去维护关系,好处就是能提高性能,不用重复维护。维护两种关系,看下

2.1 控制级联关系是否有效

cascade是否有效,就得看inserve的值,如果是自己方来维护关系,那么cascade就有效,反之无效

2.2 控制外键关系

这个就得通过让自己拥有对方的实例引用(可能是set,也可能就是单个存储对象的变量),这样才具备控制外键关系的能力,然后看inserve的值,

3、inverse只能在一的一方设置,并且默认值是true,也就是说,不设置inverse时,默认是让多的一方去维护关系,这种一般是在双向、外键关系中才设置inverse的值,如果是单向的,就只有一方有维护关系的权利。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值