Hibernate中级联操作

1.一对多 | 多对一

在表中的表达:
在这里插入图片描述
在实体中的表达
在这里插入图片描述
在orm元数据中的表达
在这里插入图片描述
在这里插入图片描述
注意:在声明Set和多对一的对象的时候要记得写上get和set必须声明成属性,否则在name填入的会红字报错。

2.多对多

表中的表现:
在这里插入图片描述
实体中的表达:
在这里插入图片描述
orm元数据中:
在这里插入图片描述

3.级联(cascade)

级联是什么:级联是对一个对象进行操作的时候,与它相关联的对象也会一并进行响应的操作。
例如:
在这里插入图片描述
这是普通的一个保存客户和客户的联系人的操作。若在客户上添加级联保存则代码只需要写成:
在这里插入图片描述
就可以在保存客户的同时级联保存联系人的信息到数据库。

添加cascade属性,常用的参数有:

  • all: 所有情况下均进行关联操作,即save-update和delete。
  • none: 所有情况下均不进行关联操作。这是默认值。
  • save-update: 在执行save/update/saveOrUpdate时进行关联操作。(最常用)
  • delete: 在执行delete 时进行关联操作。

4.关系维护(inverse)

  1. 在保存或更新等操作时,双方都会维护主键关系,关系维护两次,造成了冗余,影响性能。
    例如:当添加一个LinkMan并指定是那个Customer的联系人时,LinkMan中有被主键约束修饰的字段,那么要让LinkMan对象执行insert语句还是Customer执行Update语句来对字段进行更新呢?实际上两个都会执行。那么我们将在一方设置inverse属性。
  2. inverse的属性值为boolean类型,为true时,是己方放弃维护。为false时,是自己来维护关系(默认值),双方只能有一方放弃维护关系,但是在一对多中,只能是一的一方放弃维护。
  3. 对级联的影响。如果己方放弃了维护关系,那么己方的级联也将会失效

猜你喜欢

转载自blog.csdn.net/weixin_43184769/article/details/82845664