1

私は Stuts2/Google Guice/JPA で構築された Java Web アプリケーションを持っています。JPA ベンダーとして hibernate を使用します。Google の App Engine で使用できるようにサポートを追加したいと考えています。もちろん、クエリとマッピングで問題が発生しています。多対多や結合などはサポートされていません。

アプリをスタンドアロンにできるようにするための最適なソリューションを考え出そうとしています。たとえば、JPA ベンダーがサポートする任意のデータベースの tomcat/jetty、または datanucleus をベンダーとして使用する Google App Engine です。

私が考えた 1 つの解決策は、スタンドアロンの実装に JPA を使用し、Google の App Engine に JDO を使用することです。明らかに、これにはモデル オブジェクトに JPA と JDO の両方のアノテーションを付けて、DAO レイヤー用の別の実装を作成する必要があります。

他の人が試した他の良い解決策はありますか?

4

2 に答える 2

1

クエリを XML 構成に再配置できます。このようにして、ある構成で RDBMS のクエリを作成し、別の構成で BigTable のクエリを作成できます。

もう 1 つの考えは、DataNucleus も JPA ベンダーであるということです。GAE とサーブレット コンテナーの両方で JPA をプライマリ ベンダーにすることで、おそらく開発を容易にすることができます。多くの場合、JPA ベンダーは、メタデータの扱いに非常にわずかな違いを持っ​​ているため、頭を悩ませることはありません。

于 2010-01-10T22:01:10.187 に答える
1

あなたのアプローチは良いものだと思います。よく設計されたアーキテクチャが最良のアプローチだと思います。ほとんどの場合、DAO レイヤーで多くの差異が見られます。適切な設計では、DAO インターフェースが表示され、特定のモデル アクセスごとに、JpaMyObjectDAO、JpaGAEObjectDAO など、そのインターフェースの独自の実装があります。また、シアドと同様に、エンティティ クラスの宣言に関しては、App Engine にはいくつかの特別な要件があります。おそらく、異なるバージョンのエンティティ クラス (それぞれが App Engine や Hibernate などのストレージ スキームに準拠している) を使用して、上位層で使用する共通の DTO 表現を使用することができます。

于 2010-01-10T22:11:46.717 に答える