休眠:OnDelete 与级联 = CascadeType.REMOVE

rap*_*apt 5 database annotations hibernate jpa

是有什么区别@OnDelete(action=OnDeleteAction.CASCADE)cascade=CascadeType.REMOVE

我在这里读到:在 JPA2是否有等效的 OnDelete 注释,@OnDelete(action=OnDeleteAction.CASCADE)级联将由 DB 处理,而cascade=CascadeType.REMOVE级联将由 ORM(休眠)处理。

  1. 您能解释一下 Hibernate 处理与 DB 处理之间的区别吗?它是如何“由数据库”完成的?

  2. 另外,我想知道我为什么要关心差异。我的意思是,我为什么要选择一种态度而不是另一种态度。

  3. 最后一个问题是,查看OnDelete javadoc我想知道为什么它没有说明是什么以及为什么我应该使用它(顺便说一句,继承路径在哪里?)。那么这些要点在哪里记录?

aye*_*gin 2

1-有些数据库支持级联选项,有些数据库不支持:如果数据库支持级联,那么hibernate将相应地创建模式并让数据库处理级联。

2-如果数据库句柄级联使用它,其他副hibernate必须查询数据库,这是性能损失。

3-不知道