2

エンティティ Bean (JPA 2) の DTO へのマッピングを処理する最良の方法は何だろうと思っています。GWT ではエンティティ Bean を「直接」使用できないため、代わりに DTO を処理する必要があります。

さまざまな関係を持つエンティティがいくつかあります (OneToOne、OneToMany、ManyToMany と結合テーブルなど)。最初に、次のようなメソッドを持つクラス MyEntityTransform.java の助けを借りて、すべてのエンティティを手動で DTO に変換し始めました。

  static final public CarBean persistant2Bean(CarPersist) {
            return new CarBean(cartPersist.getId(), carPersist.getName(),
                    carPersist.getDescription());
        }

その他のメソッドは、persistent2BeanCollection(...)、persistent2BeanMap(...)、bean2Persistent(...)、bean2PersistentCollection(...) です。

コレクションを処理するとき、特に同じエンティティが他のいくつかのエンティティへの参照を持っている場合、これは面倒な作業になります。

エンティティと DTO 間のマッピングを処理するために DOZER フレームワークを使用することを考えていました。ここで言及されています:http://code.google.com/intl/fr/webtoolkit/articles/using_gwt_with_hibernate.html

ただし、さまざまな JPA マッピング (たとえば、多くの場合) をどの程度うまく処理できるか、および dozer-bean-mappings.xml ファイルで構成するのにどれだけの作業が必要かはわかりません。また、このフレームワークはリフレクションを集中的に使用してマッピング操作を実行していると思います。このようなアプローチは、たとえば MyEntityTransform.java クラスでメソッドを使用する場合など、「手で」実行されるマッピングよりもはるかに遅くなります。

何を指示してるんですか ?GWT で JPA エンティティを処理した皆さんの経験に興味があります。

ありがとう。

セリーニオ

http://www.celinio.net/techblog

4

3 に答える 3

2

まず第一に、私は常に Dozer を好みます。DTO 構造がエンティティと同じ場合、マップ関数を呼び出すだけで、設定なしで Dozer を使用できます。DTO がエンティティと異なる場合、構成のオーバーヘッドは最小限に抑えられます。本当に優れたドキュメントを参照してください。

パフォーマンスが問題になる場合は、コード ジェネレーターのアプローチを好みますが、エラーが発生しやすいため、マッピング コードを自分で作成することは決してありません。

于 2011-05-01T23:03:50.240 に答える
1

GWT モジュールの EJB または JPA モジュールにエンティティを含めるだけの場合は、次の手順に従います。私はそれを自分で見つけました、そしてそれは私のために働きました。

  1. EJB モジュールを GWT モジュールのビルド パスに含めます (既に行っている可能性があります)。

  2. 次に、EJB モジュールのエンティティ パッケージに移動します (「com.ejbproject.entities」とします)。

  3. Entities.gwt.xml という名前のファイルを作成します ( <ProjectSourcePath>/com/ejbproject/entities/Entities.gwt.xml)

  4. ファイルの内容は

    <module>
        <source>com.ejbproject.entities</source>
    </module>

  5. GWT プロジェクトの <modulename>.gwt.xml ファイルに次のフラグメントを含めます。

    <inherits name="com.ejbproject.entities.Entities"/>

  6. これで、エンティティを GWT クライアント側と gwtCompile に問題なく含めることができます

于 2011-06-13T15:56:45.117 に答える
1

チェックアウトする 1 つのソリューションはModelMapperです。

オブジェクト モデルをインテリジェントにマッピングすることにより、必要な構成の量を最小限に抑えるという点で、Dozer などとは異なります。構成が必要な場合、ModelMapper は、文字列参照や XML を使用するのではなく、実際のコードを使用してプロパティと値をマップする、リファクタリングに安全な API を提供します。

詳細については、ModelMapper サイトをご覧ください。

http://modelmapper.org

于 2011-06-24T05:26:43.660 に答える