2012-11-24 97 views
1

JPA提供了可用於自動持久化/更新/刪除特定實體依賴的其他實體的級聯。假設我有三個實體:Job,BankAccount和Person(與前兩個實體具有OneToMany關係)。在沒有級聯的事件,我會寫:JPA級聯創建緊密聯接

person.addJob(job); 
person.addBankAccount(bankAccount); 

em.persist(job); 
em.persist(bankAccount); 
em.persist(person); 

級聯事件(與CascadeType.PERSIST對實例的類型),使我能夠省略前兩個堅持()的調用,並確保單個em.persist(person);來電會也堅持依賴實體。

現在,這使得代碼作用於與其內部緊密耦合的實體。我管理實體的方式現在與我在實體中使用的註釋密切相關。由於它引入了額外的耦合,這可以被認爲是不好的做法嗎?

回答

3

不是真的,這是相當標準的做法,以利用級聯操作。

您應該創建集成測試,以驗證域上實際發生的任何級聯註釋。

+0

應該有一個既定的政策,以利用級聯或不在整個代碼?僅在某些實體中使用級聯導致難以維護的代碼IMO。我對嗎? –

+1

我會這樣想,真的沒有任何反對在需要它的地方使用它的論點。不要只是盲目地添加它,想想你將如何與這些對象進行交互以及你的需求是什麼。 – darrengorman