2013-01-16 28 views
69

1)なぜDTODAOを使用するのですか?また、いつ使用するべきですか?私はGUI Javaソフトウェアを開発して、データの挿入、編集、削除を行います。しかし、私はDTO/DAOModelViewController(MVC)の構造を区別するのに苦労していますか?それらは似ていますか?JavaでGUIを介してデータベースとやりとりするときに使用するほうが良いです。DTOとDAOの概念とMVC

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

<a href="http://www.youtube.com/watch?v=Iwwznm9XSME">Here is what Im talking about</a> 

ビューとコントローラを1つのクラスに含めると悪いことがありますか?

+0

どこでDTOを使用しますか? –

+0

@RomanCにはイベント(eventId、name、date.etc)を保持するデータベーステーブルがありますので、DTOとMVCは同じか異なっていますか? – Hoody

+0

データベースにはDTOではなくデータベースオブジェクトがあります。 –

答えて

153

DTOはData Transfer Objectの略語で、アプリケーションのクラスとモジュール間でデータを転送するために使用されます。 DTOには、データ、ゲッタ、セッタおよびコンストラクタのプライベートフィールドのみが含まれている必要があります。このようなクラスにビジネスロジックメソッドを追加することは推奨されませんが、いくつかのutilメソッドを追加することはできます。

DAOはData 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パターンに従う場合は、別のコントローラを用意することをお勧めします。別のクラスを作成し、イベントハンドラからこのコントローラにメッセージを送ります。これにより、ビジネスロジックがビューから分離されます。

+0

最初の質問は、DTO/DAOとMVCの違いについてです。 – madth3

+0

おそらく私はその質問を誤解していました。 – Petr

+0

'PersonDAO.save()'のようなものを有効/無効にするトリガを追加したいのであれば、 'save()'メソッドに直接入れるのですか?また、データベースパフォーマンスカウンタの場合、タイマーを 'save()'メソッドに直接追加しますか?また、PersonDTOの中にPersonDAOのリファレンスを持つことは容認できますか? – BenR