2014-03-04 31 views
0

   嗨,JPA 2:數據存儲或外部數據庫?

   我想獲得一個想法有關至極數據存儲解決方案,用於存儲在用JAVA寫的(JSF 2.1)的應用程序引擎中的應用。 我想使用15左右的幾張桌子,有很多互動。我是否應該使用JPA 2中通常的數據存儲,但沒有(多對多)關係,還是應該使用永久數據庫存儲?

  Google雲sql seam成爲最佳解決方案with JPA 2來堅持數據,但它不是免費的。


 隨着the datastore and JPA 2,我們不能建立多對多的關係,但我們不能做到這一點與2「一對多」的關係? 例如:

  • 飛機和一些乘客。一架飛機可以擁有許多乘客,而一名乘客可以使用許多飛機。 我們可以將它翻譯爲關係:飛機許多乘客。而在數據存儲,我們應該像PLANE一個其存儲到很多TICKET多對一乘客


非常感謝您的回答:))

+0

對於我來說,數據存儲是根據sql支付的正確解決方案。您可以創建一對多和多對一的方式: 「數據存儲區可以本機保留包括密鑰在內的簡單類型的集合,這爲定義一對多(和多對多)關係創建了一種方法。」這是從物化文件。一旦你理解了數據存儲,你會看到它的使用有多容易。首先嚐試使用JDO進行CRUD操作,以瞭解基本知識並將您的項目轉換爲使用對象化。 – makkasi

+0

GAE/Datastore JDO/JPA確實支持無文件(普通JPA)M-N關係,正如他們的文檔所述。引用JPA1文檔不幫助您的情況 – DataNucleus

回答

0

如果你喜歡一個免費的Java AppEngine數據存儲解決方案,認真考慮AppEngine Datastore。如果您對意見持開放態度(對不起,對StackOverflow沒有真正意義上的主題),我將JDO和JPA視爲低級數據存儲API頂層的抽象層的印象是,它們不值得使用,尤其是隨着應用程序複雜性的增加。閱讀以前有關這些API的StackOverflow問題,以獲得您可能遇到的各種問題的印象。至少低級數據存儲API可以讓你聯繫最終要完成工作的代碼。

在我看來,最難的工作是重新設計基於關係假設的應用程序功能(請參閱相關的SO問題)。你很清楚,多對多關係對Datastore來說是不可行的。 NoSQL方法可能會導致數據重複(冗餘而不是正常形式)和最終的一致性。這可能會與你的SQL期望衝突,但不用擔心,這種改變是值得的。您的例子是與乘客以及航班相關的機票在數據存儲中使用三種貨幣即可。將關係限制移入應用程序代碼中,例如,如果該乘客的機票存在,則不要刪除乘客。

+0

感謝您的完整答案。 – BenjD90

相關問題