2013-03-27 71 views
0

我有一個「Project」實體/類,其中包含許多「複雜」字段,例如引用爲具有多種可能實現的接口。舉一個例子:一個接口Property,其中T實際上是任何類型的(與我實現的類型一樣多)。JPA,複雜的對象圖和序列化

我使用JPA。對於這些領域,我別無選擇,只能實際序列化它們來存儲它們。雖然我沒有必要在我的查詢中使用這些對象,但這顯然會導致一些問題,例如開始維護/更新。

我有兩個問題:

1)是否有「貓膩」我可以考慮讓我的數據庫是最新的情況下,我在我的序列化類中的「破」的變化(大多數時間序列化變化處理得好)?

2)是否會轉向JDO提供幫助?我對JDO的經驗很少,但我的理解是,使用JDO,表中的序列化對象將永遠不會發生(儘管如何處理更改?)。 爲了支持2)我還必須補充一點,我擁有的對象圖可能非常複雜,例如可能涉及10個表來檢索完整的「項目」。

回答

0

JDO顯然支持接口字段的持久性(但是DataNucleus JPA也允許它們的持久性,但是作爲供應商擴展)。讓一些接口字段成爲任何可能類型之一會給RDBMS帶來問題,而不是像JDO那樣。底層數據存儲更多是您的問題(無法充分反映您的模型),而許多其他數據存儲中的其中一個可以幫助您。例如DataNucleus JDO/JPA支持GAE/Datastore,Neo4j,MongoDB,HBase,ODF,Excel等,並且簡單地將相關對象的「id」保存在擁有對象表示中的「列」(或等價物)中。所以這樣的突破性變化將遠遠低於你現在擁有的