0

App Engine やその他の Java アプリケーション サーバーで実行する必要があるプロジェクトに取り組んでいます。App Engine ではデータストアを使用し、他の環境では従来のリレーショナル データベース (主に MySQL) を使用します。

「両方で動作する JDO/JPA モデルを 1 つ持つ」ことが可能かどうかを知りたいです。

可能であれば。どのように?具体的には、キーをどのように処理しますか? Datastore では、独自の Key オブジェクトを使用するか、「エンコードされた文字列としてのキー」を使用する必要がありました。これらのキーをリレーショナル データベースに移植するにはどうすればよいでしょうか。

そうでない場合、ベストプラクティスは何ですか? 私たちが今持っているアイデアは、抽象 DAO を定義し、DAO 実装の 2 つのセットを用意することです。最良の方法は、データストアに Objectify を使用し、リレーショナル データベースに JPA を使用することだと思います。しかし、その方法では GWT RequestFactory (私たちが使用している別のテクノロジー) を活用できませんでした。それともできますか?

4

3 に答える 3

1

明らかに、JDO は、RDBMS、ODBMS、ドキュメント、マップ ベース、Web ベース、ドキュメント ベース、ファイル ベースなど、すべてのデータストアで動作するように設計されています。はい、そのような移植性は現実的です。移植性が必要ない場合は Objectify を使用できますが、移植性が必要であると言うので、それはオプションではありません (なぜ「最善の方法」と考えるのかわかりません)。すべてのデータストアで、文字列を PK として使用できます。

于 2013-03-21T15:49:22.933 に答える
0

ほとんどの場合、異なる方法でデータを考えたり構造化する必要があるため、リレーショナル データベースと階層データベース (ここではデータストア) の両方で同じ「永続性」モデルを一致させるのは非常に難しいと思います。

たとえば、データストアでクエリを実行できるようにするために、多くのエンティティ間でデータを複製する必要がある場合があります。

あなたのプロジェクトについてあなたが言ったいくつかから、Google App Engine と従来のサーバー (Tomcat、JBOSS、WebSphere など) の両方でそれを使用する必要がある場合は、Google Cloud SQL を使用してデータ モデルを同じに保ちます.. .

または、どちらの場合も階層型データベースが必要な場合は、「従来の」サーバーにオープンソースのデータベースをインストールしてください...

そもそも、どのようなプロジェクトについて話しているのでしょうか? :)

于 2013-03-24T13:48:50.233 に答える
0

GAE についてはわかりませんが、JDO はデータストアに依存しない必要があるため、JDO アノテーションを使用してクラスをマップし、その間に RDBMS ベースの拡張機能 (つまり Datanucleus) を使用していないことを確認できます。そもそもそのような拡張機能があるかどうかはわかりません。

キーについては、明らかに GAE を使用すべきではありませんが、必須かどうかはわかりません。

于 2013-03-21T00:38:12.107 に答える