3

Java アプリケーションでは、次のものを使用するのが一般的です。

  • IHM レイヤー
  • サービス層
  • ダオレイヤー

各レイヤーには独自のオブジェクトがあり、レイヤーから別のレイヤーにオブジェクトを変換するためにコンバーターに依存するのが一般的です。

私の場合、IHM レイヤーとして Sing MVC を使用し、doa レイヤーとして MyBatis を使用しています。

Spring MVC と MyBatis は、その Bean に注釈を付けずに Bean のみを使用するため、次のようになります。

3 つのレイヤーに異なるオブジェクトを配置する必要がありますか? 3 つのレイヤー間で同じオブジェクトを共有することは良い方法ですか? または、なぜそうすることが推奨されないのですか?

4

2 に答える 2

3

ほとんどの場合、レイヤー間を完全に分離することをお勧めします。

ユーザーデータを保持する と呼ばれるオブジェクトがありUserDAO、すべてのレイヤーにかなりの量のコードを記述した後、オブジェクトに含まれるように更新sureNameすることlastNameにしたとします。すべてのレイヤーを調べて、そのオブジェクトフィールドへのすべての参照を変更する必要があります。 .

一方、このオブジェクトを DB 層に保持し、上位層の他のオブジェクトにマップした場合、変更する必要があるのはマッピングだけです。

somObj.setUserLastName(dao.getSureName());

に:

somObj.setUserLastName(dao.getLastName());

もちろん、これはばかげた例ですが、デモンストレーション用です。

一方、すべてのレイヤーですべてのオブジェクトを分離すると、多くの冗長性と重複が発生し、メンテナンスが困難になる可能性があるため、長所と短所を考えて、分離するのに最適な場所とそうでない場所を決定する必要があります。

于 2012-07-16T12:41:28.153 に答える
0

私は、各レイヤーのモデルを持つプロジェクトと、優れたドメイン モデルを持つプロジェクトの両方に取り組んできました。

私の好みは、開発者とアーキテクトが時間をかけて開発し、各フィールドの使用について考えたドメイン モデルです。
この種のドメイン モデルは、保守と更新がはるかに簡単です。

3 つのモデルと 4 つのコンバーターを更新する必要があることを意味する DAO レイヤーにフィールドを追加しなければならなかったことを覚えています。バグを導入するリスクは重大です。特に、各レイヤーに Date オブジェクトの別の実装がある場合などです。(Dao --> java.sql.Timestamp、Service --> java.util.Date)。

したがって、すべてのレイヤーで共有される優れたドメイン モデルをお勧めします。

于 2012-07-16T13:20:07.000 に答える