0

私はJavaEEでの開発に比較的慣れていません。オブジェクトの作成または削除の呼び出しのためにパラメーターをセッション Bean に渡すという点で、最適な形式は何か疑問に思っています。

私のバックエンドでは、DAO で DTO を使用して、データベースで作成、更新、削除、および読み取り操作を実行します。

public class BusinessObject {
    public String name;
    public int id;

    // Assume constructor to init these 2 fields.
}

私は単純なDAOインターフェースを持っています:

public interface BusinessDAO {
    public void createBusinessObject(BusinessObject bo);
    public void deleteBusinessObject(BusinessObject bo);
    public void updateBusinessObject(BusinessObject bo);
    public void findBusinessObject(BusinessObject bo);
}

BusinessDAO(この段階での実装は無関係だと思います)

私の実際の質問に進みます-リモート(ステートレスセッションBean)EJBインターフェースがある場合、リモートEJBインターフェース内にメソッドを定義する必要があります:

public void addBusinessObject(String name, int id);

または、次のようなもの:

public void addBusinessObject(BusinessObject bo);

これらのメソッドのいずれかを呼び出す単純なクライアント プログラムがあります。

私の考えでは、オブジェクトの作成についてはBusinessObject bo定義の方がうまくいくと思いますが、リモート インターフェイスの他の定義について従うことができるパターンがあるようです。
次のようなものに同じスタイルのメソッド定義を組み込む方法がわかりませんfindObject(BusinessObject bo)

を作成し、そのオブジェクトの ID フィールドのみを提供する標準的な方法はありBusinessObjectますか?DAO 実装は、(セッション Bean を介して) 入力されたオブジェクトをクライアントに返しますか?
それとも、代わりに をメソッドに渡して、単に を返すほうがよいint idでしょfindObjectBusinessObjectか?

4

1 に答える 1

2
  • に関してはfindObject():IDを渡すだけです。リモートインターフェイスを設計しています。とにかく、DTO に多くのフィールドがある場合、これは帯域幅を浪費します。

  • についてaddBusinessObject():DTOを渡します。DTOに多数のフィールドがある場合、これはより適切に「スケーリング」します。フィールドを追加/削除すると、後でメンテナンスが簡素化されます。

一方、 のようなものがある場合は、 と新しい値 (完全な DTO ではありません)changeOneFieldOnly()を渡すことができます。ID特にリモート インターフェイスの場合は、ユース ケースに合わせてメソッドを調整してください (経験則として、ユーザー アクションごとに、リモートサービス レイヤーへの呼び出しは 1 つだけです)。

そのため、 (作成/追加/削除ではなく)ユース ケースの観点からリモート インターフェイスを見てください。

于 2013-08-13T12:25:37.493 に答える