Google App Engine でプロジェクトを開発したいと考えています。Google Big Table をデータベースとして使用したいと考えています。データベースには、JPA と JDO の 2 つのオプションがあります。皆さん、それについて私に提案してくれませんか? どちらも私にとって新しいものであり、学ぶ必要があります。だから私はあなたの返事の後に1つに焦点を当てます.
5 に答える
Data Nucleus を使用しているため、JDO と JPA に関する FAQ を参照してください。 http://www.datanucleus.org/products/accessplatform_3_0/jdo_jpa_faq.html
DataNucleus AccessPlatform は、Java 永続性の JDO 仕様と JPA 仕様の両方をサポートします。そのため、どちらのテクノロジーにも「既得権益」はなく、ユーザーがどちらを好むかを選択できると考えています。JDO と JPA について Web 上で多くの FUD があり、主に RDBMS ベンダーによって行われています。この FAQ は、これらの点の多くを修正します
主な違いは、JDOがリッチドメインモデル(ロジックとデータ)をサポートしていることです。実際、すべての永続クラスは現在のPersistenceManagerへの参照を持ち、クエリを発行できます。デフォルトでは、フィールドを永続化しない可能性があります。
JPAはそのようなソフトウェア設計をサポートしていません。実際、各エンティティにはPersistenceManagerへの参照がありません。そのためには、ThreadLocal変数に頼る必要がありますが、これは非常に洗練された堅牢なソリューションではありません。
JPA は ORM を介して Java オブジェクトをリレーショナル データに永続化しますが、JDO は Java オブジェクトの永続化のより一般的な仕様です。したがって、JDO を使用すると、オブジェクトのストレージ実装オプションの自由度が高まります。
JPAは、永続性の主要なJava標準です。したがって、RDBMSを使用していて、ORMが必要な場合は、JPAを使用すると言います。
Hibernateは一般的にJPA実装として使用されます。追加の機能が必要な場合は、Hibernate固有のアノテーションを使用できます。
この質問は、 GoogleAppEngineでのJDOとJPAforJavaですでに説明されているようです。