2010-12-06 115 views
6

我必須做一個實體的深層副本。基本上有一個域對象,我必須複製,所以我們需要做的實體及其孩子和孩子的深層副本,並儘快。比我需要設置大家在結構爲空的ID,所以他們得到插入新實體。已經有一些討論herelink text。基本思想是我們自己編寫一個深層複製邏輯。我只是想知道是否還有其他更好的方法,比如在數據庫級別上執行一些過程。JPA實體的深拷貝

我使用Hibernate作爲JPA提供者,所以冬眠具體的解決方案也可以工作。

回答

1

有沒有簡單的方法深入克隆Java中的對象;因此Hibernate對此沒有特別的支持。這就是說:您可以從深度複製代碼訪問Hibernate註釋,並使用它來確定要執行的操作 - 甚至可以添加自己的註釋(以停止深度複製代碼克隆靜態主數據)。

所以應該可以寫這種方式工作,並使用@Id註釋和你們中的一些編碼規則來實現這一目標的實現。

使用存儲過程也可能工作,這取決於您使用的數據庫,以及如何配合你是在SQL上。但由此產生的代碼將是難以爲主,測試和理解。所以我建議反對它。