mappingBy和CascadeType.ALL有什么区别?

时间:2018-08-26 21:04:10

标签: java hibernate jpa

我正在学习Hibernate并遇到一个问题:mappedByCascadeType.ALL有什么区别?

我们在拥有方使用mappedBy来消除过度的持久性。例如,使用mappedBy,我们可以替换

a.addB(b);
b.setA(a);

使用

a.addB(b);

如果A与B之间存在一对多关系,而B与A之间存在一对多关系(双向)。

为什么在这种情况下我们需要CascadeType

1 个答案:

答案 0 :(得分:2)

CascadeType选项告诉hibernate在A上执行时哪些操作也要在B上执行。
例如,如果您保留A而未设置CascadeType.Persist,则B将不会保留。
另一方面,mappedBy选项创建双向关系,其中A由B表中的外键表示。
如果您实际需要CascadeType.ALL取决于您的用例,它可以让您将A和B之间的关系视为一个组合,其中A拥有B。