2013-08-31 75 views
0

現在我有一個每個實體的DAO。如何堅持一對一的關係? (沒有框架)

當我保存某個實體時,比如Employee,它需要鏈接到相應的Node實體以顯示在樹中。

這是怎麼做到的,同時保持代碼儘可能簡單?

編輯:這裏有一些額外的細節。在OO中,我想要實現的是能夠讓一個節點引用一個可能在另一個節點下找到的對象。通過這種方式,只需要一個節點來描述樹,同時可以從包含的對象中獲取不同的屬性。以下是我看到的東西:

節點1-1 NodeObject 1-1職工

+0

您可能要更加詳細地描述,以得到一個有用的答案你的問題。 –

+0

我已經添加了一些細節。 –

回答

1

創建一棵樹並不真正意味着一個一對一關係的節點,而是一個一對多的關係。

在這些術語中,您的Employee表可以有一列代表其中每個實體所屬的節點的ID。

在你的DAO,那麼你應該

  • 傳給你想連接作爲參數傳遞您的方法EmployeeNode對象,
  • 通過查找中查找Node對象的ID在數據庫中的相應 實體,
  • 並使用來自對象 和取得的Node ID的數據創建僱員實體。

確實,你應該對你的問題更具體一些,但是。基於下面的評論

編輯:

如果您Node表表示的樹,你希望每個Node有與Employee一比一的關係,這取決於其引用對您很重要。

  1. 您希望能夠引用屬於某個節點(可能)的員工。
  2. 你想找到僱員屬於哪個節點(可能性較小,但可能)。

如果您只需要編號1,那麼您將在您的Node實體中擁有僱員的編號。如果您同時需要,則還可以將節點的ID放入您的Employee實體中。

上述DAO方法的邏輯仍然適用。

+0

_創建樹的節點並不真正意味着一對一的關係,而是一對多的關係._這是正確的。樹結構本身使用帶有包含父ID的子記錄的單個表完成。在這種情況下,要求員工可以在樹中的多個地方找到。所以需要有某種解耦。我仍在思考這個問題。 –

+1

我更新了我的答案。 –

1

假設您在員工和員工詳細信息之間有一對一關聯。

Employee(Data Object)------>Employee Table 
Employee Detail(Data Object)------>Employee Details Table 

員工詳細信息是具有員工表的外鍵的列員工ID。

現在你想堅持員工。首先,您將持久化Employee對象並獲取其主鍵。現在使用Employee表的主鍵填充Employee Detail的屬性employeeId。現在,保留Employee Detail對象。

要裝入這兩個實體在單個去,用內部員工和員工詳細信息表之間的連接