[解決済み] DTO・DAOの概念とMVC【終了しました
質問
1) なぜ
DTO
と
DAO
また、どのような場合に使用するのでしょうか。私が開発しているのは
GUI
データの挿入、編集、削除を行うJavaソフトウェアです。を区別するのに苦労しています。
DTO/DAO
と
Model
,
View
,
Controller
(MVC)構造ですか?これらは似ていますが、Javaを通してデータベースとやりとりする場合、どちらを使うのが良いでしょうか?
GUI
.
2) 私がとても気になっているのは、「このような場合は
view
と
Controller
を1つのクラスで使用します。もし私たちが
Netbeans
を作成することができます。
GUI
のようなコンポーネントを追加します。
JButton
をフレーム上に配置し、ボタンをダブルクリックすると、そのフレーム上の
actionListener
メソッド(Controller)の中にあるように見えますが、これはデータをユーザーに表示するフレーム(View)の中にあるのです。つまり、同じクラスの中にあるわけです。これは完全にコンセプトに反しているのでしょうか、それとも違うのでしょうか?
これ というものです。
ビューとコントローラを1つのクラスにすることは悪い習慣ですか?
解決方法は?
DTO
の省略形です。
データ転送オブジェクト
アプリケーションのクラスとモジュールの間でデータを転送するために使用されます。
-
DTO
は、データ用のプライベートフィールド、ゲッター、セッター、コンストラクターのみを含む必要があります。 -
DTO
このようなクラスにビジネス・ロジックのメソッドを追加することは推奨されませんが、いくつかの util メソッドを追加することは可能です。
DAO
の省略形です。
データアクセスオブジェクト
したがって、データストレージ(データベース、ファイルシステムなど)にデータを取得、保存、更新するためのロジックをカプセル化する必要があります。
以下は、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パターンに従うとなると
別のコントローラ
このコントローラは、フレームのビジネスロジックを別のクラスに格納し、イベントハンドラからこのコントローラにメッセージをディスパッチします。
これにより、ビジネスロジックとビューを分離することができます。
関連
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] DTO、VO、POJO、JavaBeansの違い?
-
[解決済み] クラスフィールドの初期化はコンストラクタで行うか、宣言時に行うか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] Maven: assembly-pluginが全く実行されない
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] DTO、VO、POJO、JavaBeansの違い?