2010-11-20 14 views

答えて

7

私はJPAについてよく分かりませんが、私はJDOに行ってきました。もしあなたが初めてならば、それはかなり険しい学習曲線と多くの無関係のものがありますGAE。あなたが勝つのはowned relationships,なので、データストアIDだけでなく、実際の参照を持つクラスを持つことができます。 @Element(dependent = "true")アノテーションのような、アノテーションを介してJDOが行う便利な機能もいくつかあります。親オブジェクトを削除することができ、JDOはすべての子を削除するため、かなりの作業を省きます。一般的に、GAEのドキュメントでは、JDOを効果的に使用するために知っておくべきことがたくさんあるので、データ核のドキュメントを読んで、フェッチグループに特に注意を払うことが重要です。

またhere.

最後に私が言及した客観化や小枝、2つの明らかに人気の代替フレームワーク、になり、ほとんどあらゆる考えられるシナリオに対処JDOとJPAのための簡潔な例の大規模なコレクションを見つけることができますquestion I asked私もこの決定をしようとしていました。

他のデータベースへの移植性については、GAEの移植性についての心配は少し間違っていると思います。 Googleは、GAEコードが移植性があると思うことを望んでいる限り、私はそのパイプの夢だと思っています。あなたは、Googleが提供するAPIの特定の組み合わせ、おそらくどこにも見られないかもしれないミックス、そしてGAEの多くの制限や特質を取り巻くコーディングを目標とするようにコーディングすることになるので、移植性を忘れるでしょうデータアクセスAPI実際、私がこの問題について私の決断を作り直すことができれば、オブジェクト化などのGAE用に特別に構築されたデータアクセスフレームワークを使用すると思います。

4

私はそれが味の問題だと思います。 ORMソリューション(JDO/JPA)は、通常、より快適なソリューションです。一方、低レベルのAPIは完全な柔軟性を可能にしますが、あなたはORMの制限に拘束されません。もちろん、より多くのコードを書く必要があり、独自のデータストア抽象化レイヤーを作成することもできます。後で特定のものを最適化する必要がある場合、これは便利になるかもしれません。

もちろん、JDO/JPAを使い始めることができます。柔軟性が必要であることがわかっても、コードの特定の部分をリファクタリングして、低レベルの機能を使用することができます。 tempyが述べたように、内部参照はIDとして保存されます(もちろんキーの場合と同じです)。

一般的に(SQLの世界では)多くの人が、低レベルのものを使用することによってデータベースについてより多くのことを学び、したがって最適化のためのより良い気分を得ると言います。 ORMを使用する人はたくさんいますが、ORMがすべての作業を実行すると考えるので、非常に非効率的に使用します。したがって、パフォーマンスやメンテナンスの問題が発生します。

最終的には、わからない場合はどちらの解決策も適切だと思います。しかし、JDO/JPAを選択した場合でも、低レベルを選択した場合でも、ベスト・プラクティスについて学ぶためには、利用可能なドキュメントをチェックし、記事を読んでください(ブログ)。

フィリップ

6

低レベルDatastore APIを直接使用するように設計されていないのではなく、他のフレームワークは、データストアと対話するためのAPIを提供します。

このパッケージには、主にフレームワークの作成者向けの低レベルのAPIが含まれています。アプリケーション作成者は、データストアに提供されたJDOまたはJPAインタフェースを使用することを検討する必要があります。

source

一つのそのようなフレームワークは、はるかに簡単JDOまたはJPAよりもデータストア用のインターフェース、そして心の中で唯一のデータストアに設計されています1 Objectifyです。

+0

まあ、appengine-jrubyの方はdatamapperをお勧めしますが、dm-appengineアダプタが壊れているため、Rubyのシリアル化機能(=> memcache)を使用することはできません。 GoogleのApp Engineのドキュメントは本当に賞を受賞していません... – Philip

関連する問題