2010-09-25 61 views
3

我正在使用Hibernate,並且有幾次必須實現從父對象到子級的級聯DELETE操作。我使用了以下兩個選項。Hibernate級聯vs手動刪除

一種選擇是在父對象上公開getChildren(),將子對象添加到返回的子對象集合中,並允許Hibernate自動級聯DELETE對象。這個選項的缺點是getChildren()集合需要被暴露,即使它只被用來支持Hibernate級聯。

另一種方法是在ParentDao.delete(parent)中手動查找和刪除子項。這個選項的缺點是更多的自定義代碼。但是,如果使用批量刪除語句,則此選項可能會更好。

你主要使用什麼方法?你看到其他利弊嗎?

回答

2

你主要使用什麼方法?你看到其他利弊嗎?

我使用級聯時,我有一個真正的組成關係(和要刪除的記錄相對較少)。但是,我不會爲了實現刪除而引入這種關係,而是使用查詢(批量HQL DELETE或原生SQL查詢)。根據我的經驗,這些好處大於所需的額外代碼的「成本」(反正這個代價很小)。