2010-09-25 79 views
3

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

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

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

你主要使用什么方法?你看到其他利弊吗?

回答

2

你主要使用什么方法?你看到其他利弊吗?

我使用级联时,我有一个真正的组成关系(和要删除的记录相对较少)。但是,我不会为了实现删除而引入这种关系,而是使用查询(批量HQL DELETE或原生SQL查询)。根据我的经验,这些好处大于所需的额外代码的“成本”(反正这个代价很小)。