0

私は GWT + Hibernate プロジェクトに取り組んでいます。これには、Company エンティティ (したがって、テーブルも含まれます) が含まれます。

UI には、すべての会社を一覧表示するビューがあります。ユーザーは、そのビューから既存の会社を編集できます。

私の質問は - 変更されたデータをどのように組み込むのですか? 取得した既存の Company エンティティ オブジェクトを変更する必要がありますか?それとも、新しいデータを含む新しいインスタンスを作成する必要がありますか?

前者は、新しいインスタンスの作成を節約し、変更されていないデータをコピーする可能性があります。ただし、それは会社の分野ごとにセッターを公開することを意味します。これは可変性の削減に反します。

後者のオプションでは、1 つの新しいインスタンスが作成され、変更されていないデータのコピーが必要になる場合があります。ただし、セッターを公開する必要がなくなるため、不変性が促進されます。

どれがおすすめ?

また、遅延バインディング/リフレクションまたはシリアライゼーションには、すべてのゲッター/セッターが存在する必要がありますか? その場合、とにかくそれらを提供する必要があるため、私の質問は意味がありません。

編集 - サーバーとの通信に GWT-RPC を使用しています。

4

1 に答える 1

1

GWT-RPC はゲッターとセッターを義務付けていません。それらが存在する場合はそれらを使用しますが、そうでない場合はフィールドを直接注入します。ただし、finalフィールドを処理することはできません(フィールドを非 final のままにして getter のみを公開するか、 class に対して独自の GWT-RPC シリアル化を行うことでこれを軽減できます)。

さて、これらのオブジェクトが JPA/Hibernate エンティティであると言っているように、JPA は変更可能なオブジェクトを望んでいるので、質問に答えることができると思います。

もう 1 つ注目すべき点は、エンティティを UI にバインドする方法です。たとえば、Editor フレームワークは可変オブジェクトも義務付けています

クライアント側で新しいオブジェクトを変更したり作成したりする必要がないように、エンティティとは異なるオブジェクト (たとえば、操作変換に似たコマンド オブジェクト) をサーバーに送り返すこともできます(まだサーバー側で問題を解決する必要がありますが、それは GWT の範囲外です)。

上記に照らして、使用している API (JPA/Hibernate、GWT-RPC) または考慮したい (編集者) 可能性があるため、オブジェクトの可変性を使用する必要があると思います。可変オブジェクト。

RequestFactory は、クライアント側で凍結されたオブジェクトを使用することに注意してください。これらは、特定の時間枠で、特定のコンテキストでのみ変更可能です。ただし、サーバー側では可変性が必須です (ただし、オブジェクトをフリーズするか、ビルダー パターンを使用することも検討できます)。

于 2013-02-03T17:04:52.200 に答える