DTOおよびDAOの概念とMVC [終了]


133

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

2)私はおよそ本当に興味の一つは、持っているのは良い習慣であるかどうかであるviewController一つのクラスインチ を考えるとNetbeansGUIフレームクラスを作成してコンポーネントをフレームに追加できJButtonます。ボタンをダブルクリックactionListenerすると、データがユーザーに表示されるフレーム(フレーム)に表示されるメソッド(コントローラー)に移動します(表示) 。つまり、彼らは同じクラスに属しています。それはそのコンセプトに完全に反するのか、そうでないのか

ここで私が話しているものです

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


@RomanCには、イベント(eventId、name、date.etc)を保持するデータベーステーブルがあるため、DTOとMVCは同じですか、それとも異なりますか?
フーディー

データベースでは、DTOではなくデータベースオブジェクトを使用します。
Roman C

Javaクラスの@RomanCは、DTO / DAO構造を使用して申し訳ありませんが、MVCを使用する必要がありますか?違いは何
ですか

これを読んで違い確認しください
Roman C

2番目のdefでデータベースについて読みましたか?
Roman C

回答:


269

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パターンに従う必要がある場合は、別のクラスのフレームのビジネスロジックを含む別のコントローラーを使用することをお勧めします。イベントハンドラーからこのコントローラーにメッセージをディスパッチします。
これにより、ビューからビジネスロジックが分離されます。


2
おそらく私はその質問を誤解した。
Petr

4
「別のコントローラー」とはどういう意味かわかりません。私の測定値から、MVCのコントローラーは可能な限り細くする必要があり、ビジネスロジックはモデルにカプセル化する必要があります。
Paul Carlton

4
DTOを使用してオブジェクトモデルをインターフェースするのはひどい習慣です。void save(PersonDTO person)は純粋な癌です。
ベン

3
POJOのようなClassオブジェクトがあるのに、なぜDTOが必要なのですか?彼らは両方同じではないのですか?
Bhargav 2017年

3
@Bhargav DTOは、複数のエンティティ(POJO)またはエンティティからの限られたリソースの結合結果を返すために使用されます。
TheCoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.