3

私は JAX-RS サービス (Jersey を使用) を持っていますが、クライアントを実行する必要があります。皆さんはモデル オブジェクトをどのように扱っているのだろうと思っていました。クライアントとサーバー間で共有するために、モデル クラスを別の jar に入れますか? 常に DTO を使用しますか、それとも時々 (常に?) jpa エンティティを返しますか。

私が使用しなければならないサービス (私は作成していませんが、変更することはできます) はエンティティを返すことが多いので、それらのクラスを外部化しても少しおかしくないかどうか疑問に思っていました。

どう思いますか?何をするのに慣れていますか?

4

1 に答える 1

3

プロジェクトの複雑さと、その中で JAX-RS を使用する目的によって異なります。

  • 非常に単純なプロジェクトの場合、もう 1 つ DTO レイヤーを作成することはありません。
  • JavaクライアントからJavaサーバーにデータを移動するためだけにJAX-RSを使用しているように見えるあなたのようなプロジェクトの場合、もう1つのレイヤーも作成しません。これは、両端 (クライアントとサーバー) で責任を負い、両方の場所で同じオブジェクトを再利用するためです (別の jar と maven モジュールに配置することをお勧めします)。
  • JAX-RS を使用して API を外部クライアントに公開するプロジェクトの場合、DTO を使用してモデルを API から分離し、独立して進化できるようにすることをお勧めします。たとえば、API を介してすべてのフィールドを常に公開したり、モデル内の何かを変更するときにクライアントを壊したりする必要はありません。

後で編集

  • モデル データ フィールドのサブセットのみをクライアントに転送するプロジェクトの場合、効率上の理由から DTO レイヤーが役立ちます。
于 2012-09-04T05:36:24.180 に答える