web-dev-qa-db-ja.com

DTOおよびDAOの概念とMVC

1)DTODAOを使用する理由と、それらをいつ使用する必要があるか。データの挿入、編集、削除を行うGUI Javaソフトウェアを開発しています。しかし、私はDTO/DAOModelViewController(MVC)構造を区別するのに苦労していますか? Java GUIを介してデータベースとやり取りする場合に使用する方が似ています。

2)1つのクラスにviewControllerを含めるのが良い習慣かどうか、私が本当に興味を持っていることの1つです。 Netbeansについて考える場合、GUIフレームクラスを作成し、JButtonなどのコンポーネントをフレームに追加します。ボタンをダブルクリックすると、データが表示されるフレームにあるactionListenerメソッド(Controller)に移動します。ユーザー(表示)。したがって、彼らは同じクラスにいます。それはその概念に完全に反するのか、そうでないのか?

ここ は私が話していることです

ビューとコントローラーを1つのクラスに含めるのは悪い習慣ですか?

104
Hoody

DTOData Transfer Objectの略語であるため、アプリケーションのクラスとモジュール間でデータを転送するために使用されます。

  • DTOには、データ、ゲッター、セッター、およびコンストラクターのプライベートフィールドのみを含める必要があります。
  • このようなクラスにビジネスロジックメソッドを追加する場合、DTOは推奨されませんが、utilメソッドを追加することは問題ありません。

DAOData Access Objectの略語であるため、データストレージ(データベース、ファイルシステムなど)のデータを取得、保存、更新するためのロジックをカプセル化する必要があります。

DAOおよびDTOインターフェイスがどのように見えるかの例を次に示します。

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

MVCはより広いパターンです。 DTO/DAOは、MVCパターンのモデルになります。
データ取得を担当する部分だけでなく、アプリケーション全体を整理する方法を示します。

2番目の質問については、小規模なアプリケーションであれば完全に問題ありませんが、MVCパターンに従う場合は個別のコントローラーを使用する方がよいであり、ビジネスロジックが含まれます別のクラスのフレームに対して、イベントハンドラーからこのコントローラーにメッセージをディスパッチします。
これにより、ビジネスロジックがビューから分離されます。

219
Petr