Hibernate级联与手动删除

时间:2010-09-25 15:38:04

标签: hibernate cascading-deletes

我正在使用Hibernate,并且有几次必须实现从父对象到其子对象的级联DELETE操作。我使用了以下两个选项。

一个选项是在父对象上公开getChildren(),将子项添加到返回的子集合中,并允许Hibernate自动级联DELETE。这个选项的缺点是getChildren()集合需要暴露,即使它只用于支持Hibernate级联。

另一个选项是在ParentDao.delete(父级)中手动查找和删除子项。此选项的缺点是更多自定义代码。但是,如果使用批量删除语句,则此选项可能会更好。

您主要使用哪种方法?你看到其他的利弊吗?

1 个答案:

答案 0 :(得分:2)

  

您主要使用哪种方法?你看到其他的利弊吗?

当我有一个真正的 组合 关系时,我会使用级联(并希望删除相对较少的记录)。但是,我不会仅仅为了实现删除而引入这样的关系,而是使用查询(批量HQL DELETE或本机SQL查询)。根据我的经验,这些好处超过了所需额外代码的“成本”(无论如何都很小)。