2010-02-12 37 views
14

想要在Google App Engine上開發我的項目。我想使用谷歌大表作爲數據庫。對於數據庫我有兩個選項JPA和JDO。請你們建議我嗎?兩者對我來說都是新的,我需要學習它們。所以我會在回覆之後專注於一個。JPA和JDO之間的區別?

回答

9

討論。 http://www.datanucleus.org/products/accessplatform_2_1/jdo_jpa_faq.html

DataNucleus AccessPlatform支持Java持久性的JDO和JPA規範。因此,這兩種技術都沒有「既得利益」,相信用戶可以選擇他們最喜歡的產品。網絡上有很多關於JDO和JPA的FUD,主要由RDBMS供應商實施。本FAQ更正許多這些點

+0

鏈接再次死機。 – 2018-02-03 12:20:01

0

JPA是持久性的領先java標準。所以我會說如果您使用RDBMS並需要ORM,請使用JPA。
Hibernate通常用作JPA實現。如果你需要一些額外的功能,你可以使用hibernate特定的註釋。

這個問題看起來已經由於您使用的數據核,看到他們對JDO VS JPA的常見問題,在這裏JDO vs JPA for Java on Google App Engine

+0

但我想使用谷歌數據存儲(大表)使用數據核心。我按照JPA或JDO – user246160 2010-02-12 05:37:27

+2

Hibernate可能「通常用作JPA實現」,但它只適用於RDBMS,因此將無法工作GAE/J。根據GAE/J的文檔,JDO與該數據存儲非常接近,但如果持久性模型簡單並且查詢需求也很簡單,那麼JPA同樣可以使用。使用JDO或JPA,用戶需要使用DataNucleus – DataNucleus 2010-02-12 10:13:27

2

的一個重要區別是,JDO(合邏輯和數據),支持豐富的域模型,其實所有的持久對象可以有一個參考當前的PersistenceManager,發出查詢,並且,我想,可能沒有默認的字段持久性。

JPA不支持此類軟件設計。實際上,每個實體都沒有對PersistenceManager的引用,爲了使它不得不求助於ThreadLocal變量,這不是一個非常優雅和強大的解決方案。

2

因爲GAE BigTable不是RDBMS,所以JDO是更好的選擇。在Aphache JDO有一些詳細的比較文章,這對我很有幫助。

1

JPA通過ORM持久化java對象到關係數據,而JDO是java對象持久化的更一般的規範。因此,使用JDO將爲您的對象提供更多的存儲實現選項自由。