2011-02-01 51 views
4

我有一個UserTransactionJDO最佳實踐:將對象作爲父項或獨立項下的集合存儲?

每個Transaction邏輯上屬於User。不過,我可能需要查詢的交易某個子集(例如:返回所有交易用戶A與Transaction.type=1

在SQL我只是保持Transaction.userID場,與User錶鏈接它。

  • 在JDO的對象世界裏我應該這樣做嗎?存儲事務對象的指針字段與User對象ID分開?或者,我應該查詢適當的用戶對象和子查詢type = 1(例如)的交易?
  • 如果我只是爲User對象查詢,那麼我還可以只返回那些對給定查詢感興趣的對象(如前面的項目符號示例中那樣)?

回答

1

恕我直言,沒有這樣的事情作爲最佳做法一般。但是,對於在面向對象的上下文中使用事務的用戶,我會建模用戶,使其擁有一個列表或一組事務,每個事務都有一個對其用戶對象的引用。

這樣您就可以獲取用戶的所有交易,只需獲取用戶對象,然後從那裏獲取交易清單。

另一方面,您可以查詢限於特定類型的特定用戶的交易。由於每個事務都與用戶對象有關聯,因此您總是可以獲得「免費」的正確上下文。

當然,你應該考慮像lazy和eager loading這樣的設置,以及取決於實體在檢索後發生了什麼(它們是在進程中使用還是被序列化並傳輸到遠程進程等等)。 )。