私は最近、Javaプロジェクトの永続フレームワークを評価して選択しました。私の発見は次のとおりです。
私が見ているのは、JDOを支持するサポートは主に次のとおりであるということです。
- 非SQLデータソース、db4o、hbase、ldap、bigtable、couchdb(cassandraのプラグイン)などを使用できます。
- SQLから非SQLデータソースに、またはその逆に簡単に切り替えることができます。
- プロキシオブジェクトがないため、hashcode()およびequals()の実装に関する苦痛が少ない
- POJOが増えるため、必要な回避策が少なくなる
- より多くの関係とフィールドタイプをサポート
JPAを支持するサポートは主に次のとおりです。
- より人気のある
- jdoは死んだ
- バイトコード拡張を使用しない
JDO / Datanucleusを明らかに使用していないJPA開発者から、JDOを使用しないことについて弱い引数を提供している、JPAのプロ投稿がたくさんあります。
また、JDOに移行したJDOユーザーからの投稿もたくさんあり、結果として非常に満足しています。
JPAの人気が高いという点では、これは技術的に優れているというよりは、RDBMSベンダーのサポートが原因のようです。(VHS /ベータマックスのような音が私に)。
JDOとそのリファレンス実装Datanucleusは、GoogleによるGAEへの採用とソースコード(http://sourceforge.net/projects/datanucleus/)での積極的な開発によって示されているように、明らかに死んではいません。
私はバイトコードの拡張によるJDOに関する多くの不満を目にしましたが、なぜそれが悪いのかについての説明はまだありません。
実際、NoSQLソリューションにますます取り憑かれるようになった世界では、JDO(およびデータニュークリアスの実装)の方がはるかに安全な賭けのようです。
JDO / Datanucleusの使用を開始し、db4oとmysqlを簡単に切り替えられるように設定しました。迅速な開発にはdb4oを使用すると便利です。DBスキーマについてあまり心配する必要はありません。その後、スキーマが安定してデータベースにデプロイされたら、それは重要です。後で、アプリケーションのすべてまたは一部をGAEにデプロイしたり、分散ストレージを利用したり、あまりリファクタリングを行わなくても、hbase / hadoop / cassandraを活用したりできると確信しています。
Datanucleusの使用を開始する際の最初のハードルは少しトリッキーだと感じました-datanucleus Webサイトのドキュメントにアクセスするのは少し難しいです-チュートリアルは私が思ったほど簡単にはたどりません。そうは言っても、最初の学習曲線を過ぎると、APIとマッピングに関するより詳細なドキュメントは非常に役立ちます。
答えは、それはあなたが望むものに依存します。私はむしろ、よりクリーンなコード、ベンダーロックイン、ポジョ指向、nosqlのオプションより人気のあるオプションが欲しいです。
他の大多数の開発者/羊と同じようにやっているという温かいうるさい感覚が必要な場合は、JPA /休止状態を選択してください。自分の分野でリードしたい場合は、JDO / Datanucleusを試してみて、自分で考えてください。