3

私は netbeans を使用しており、それを使用してデータベースからエンティティ クラスを生成しています。

サーバー コンピューター上で実行され、このエンティティ クラスを使用して Web サービスを提供するプロジェクトがあります。これらのクラスは、エンティティ クラスからの情報を使用および変換する他のマネージャ クラスで使用されます。

サーバー プロジェクトとクライアント プロジェクトの両方でこれらのマネージャー クラスを使用する必要があります。マネージャー クラスとエンティティ クラスを含むライブラリを作成すると、両方のプロジェクトで使用できます。問題は、Web サービス クライアント呼び出しのクライアント プロジェクトで新しいクラスが生成されるため、クライアントでロジックが重複することです。2 つのクラスが 1 つのことに対応します。 Web サービス クライアント。

この問題をエレガントに解決するにはどうすればよいですか?

4

2 に答える 2

0

それが最も洗練されたソリューションであるかどうかはわかりませんが、DTOオブジェクトのレイヤー(抽象化レイヤー)を作成できます。次に、これらのDTOをマネージャークラスと一緒にライブラリに含めて使用します。サーバー側のエンティティクラスをそれらのDTOオブジェクトにマップする必要があります。また、クライアント側で生成されたオブジェクトをそれらのDTOオブジェクトにマップします。
利点は、マネージャーのクラスがデータのソースから独立していることです。これは、DBのEntityクラスで1回、Webサービスから返されたオブジェクトで1回使用しているためです。このように、それは私にはきれいに見えます。

于 2013-03-17T21:43:27.293 に答える
0

まず、クラスではなくインターフェイスに対してクライアント依存のコードを記述する必要があります。 クライアントとサーバーの両方が実装する必要がある明示的なインターフェイスを指定する方法を示すこのリファレンスを参照してください

つまり、クライアント側で (再) 使用する必要がある JAXB クラスがサーバー側にある場合、生成されたクライアント側アーティファクトの利点を活用することはできません。これは、JAXB クラスを使用できないという意味ではありません。

JAX-WS Dispatch API を使用して、JAXB アーティファクト (WSDL オプション!) を直接使用してクライアントから Web サービス要求を送信します。

要件を説明するリファレンスを次に示します。

ここではいくつかの例を示します。

于 2013-03-17T23:10:09.670 に答える