2011-07-25 63 views
1

我有一個目前嚴重依賴於繼承的領域模型,並且由於與Hibernate的代理模型相關的幾個問題,我正在重構模型以使用組合。我一直運行到的主要問題是以下情況:休眠:從繼承到組合

  1. 獲取記錄X作爲家長
  2. 休眠恢復代理家長
  3. instance of和向下轉換已細分

在此外,諸如外鍵引用返回父表的方法不適用於每個具體子類策略的表。所以現在我基本上將Parent作爲一個具體的類,並將Child1Child2的引用放入父級(需要根據需要連接來獲取數據)。

基於這個描述,有沒有人走過類似的道路並遇到過任何問題,或者這種方法是否有意義?有沒有更好的方法我沒有想到?

回答

1

我從來沒有從一個轉換到另一個,但我經歷過這兩種類型,並且你朝着正確的方向前進。問題實際上是以這種方式使用的instanceof和downcasting破壞了多態性,而Hibernate假定你正在使用而不是顛覆。走向真正的面向對象模型是朝着正確方向邁出的一步。

+0

好點,關於多態行爲,很有意義。 –

1

如果我理解你是正確的,在你的例子中,父類是超類,child1和child2是子類。 大多數時候,作文是更好的選擇,因爲我不知道你的模型的任何細節,我會說你的方式正確。 但是我認爲如果你的孩子1和孩子2會有一個父母的引用會更好,因爲他們「擴展」父母。家長甚至不應該知道它被延長,所以家長不應該提及孩子。