我正在学习Hibernate并遇到一个问题:mappedBy
和CascadeType.ALL
有什么区别?
我们在拥有方使用mappedBy
来消除过度的持久性。例如,使用mappedBy
,我们可以替换
a.addB(b);
b.setA(a);
使用
a.addB(b);
如果A与B之间存在一对多关系,而B与A之间存在一对多关系(双向)。
为什么在这种情况下我们需要CascadeType
?
答案 0 :(得分:2)
CascadeType
选项告诉hibernate在A上执行时哪些操作也要在B上执行。
例如,如果您保留A而未设置CascadeType.Persist
,则B将不会保留。
另一方面,mappedBy
选项创建双向关系,其中A由B表中的外键表示。
如果您实际需要CascadeType.ALL
取决于您的用例,它可以让您将A和B之间的关系视为一个组合,其中A拥有B。