web-dev-qa-db-ja.com

Java AppEngine:JDOまたはJPA、選択方法は?

GoogleAppEngineで実行されるGrailsアプリケーションにJDOまたはJPAを選択することの長所と短所

36
zotherstupidguy

doなぜJDOを選ぶのかわかります。他のポスターが参照している「デフォルト」とは何かわからない。 JDOはデータストアに依存しません。 JPAはそうではありません。 JDOはフェッチグループを許可します。 JPAはそうではありません。 JDOはデータストアIDを許可します。 JPAはそうではありません。 JDOはデータストアトランザクションを許可します。 JPAはそうではありません。これはすべて公記録です http://db.Apache.org/jdo/jdo_v_jpa.html

JDOとJPAは同じ問題領域を埋めません。それらはRDBMSに対してのみ重複します。 JPAはRDBMS用にのみ設計されています。 http://db.Apache.org/jdo/jdo_v_jpa_api.html でのAPI比較から明らかなように、JPAは単純ではありません。

--Andy(DataNucleus)

42
DataNucleus

AppEngine用にビルドしている場合、JDOを使用すると、道路が短くなり、問題が少なくなります。それ以外の場合は、JDOエンジンの周囲にJPAレイヤーがあります。

7
icoloma

ちなみに、Grailsのデータ永続性はHibernateの上に構築されています。 JDOは、Hibernateでは役に立たないことでどのように役立つと思いますか?デフォルトよりもJDOを選択する理由がわかりません。

JPAに関する限り、特に説得力がない限り、JPAを使用することをお勧めします。JPAはGrailsに便利なHibernate実装であり、Hibernate固有の機能は使用しません。

[問題の大幅な変更後は関連性がなくなります]

エンティティ自体にCRUD操作を含めることはまったく問題ありません。ただし、複数のエンティティを操作している場合があります。その場合、レイヤーが便利でクリーンになります、IMHO。繰り返しますが、それは要件の問題です。

3
Adeel Ansari

[問題が大幅に変更された後は関係ありません]

次の記事をご覧ください。

http://www.infoq.com/news/2007/09/jpa-dao

それは本当にあなたのアプリケーションの性質とそれのサイズに依存するように聞こえます。 JPAはより単純なので、それを堅持し、アプリケーション内のDAOレイヤーを回避するようにします。ただし、それがかなり小さく単純なアプリケーションである場合に限ります。

2
Jon