A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
DAOの有用性はいろいろありますが主に
メリット
・型として宣言するため記述ミスが低減できる。
・使用変更があった際に変更が容易
SQL文を書く際に記述ミスがありますが、型として扱えば
IDEなどでコンパイルエラーとなるためすぐに気づきます。
また、もしDBの定義変更などした際に、DAOを変更してしまえば、
こちらもコンパイルエラーとなるために影響する箇所が即座にわかります。
デメリット
・宣言する必要があるため記述が多くなる。
・処理がかさむためやや処理が遅くなりがち(無視できるレベルでしょうが)
DAOのアクセッサーをいちいち作るのでコーディング量が増えます。
また、セッターやゲッターを使用することを義務つけるために処理が冗長になりやすくなります。
また、リストを扱う際に、いったんオブジェクトに格納しなければならないケースが発生して
メモリを大量に食ってしまう事になってしまうこともあります。
No.2
- 回答日時:
Data Access Object
プログラムの中に直接SQL埋め込んでJDBCでアクセスしてもプログラムは作れますが
煩雑で大変です。
そこで、アプリで使うデータベース処理を定義し、入出力のインターフェースを定義して、
メソッドとして DAO に組み込むのです。
こうすると、アプリ側の処理とデータベース処理が分かれてアプリの
処理をわかりやすく書けます。
また、DAO を DI すれば、アプリもDAOも試験が大変やりやすくなります。
私は MyBatis で組むのが好きですね(^^;
No.1
- 回答日時:
より良い設計のためのデザインパターンのうち、DAO はデータ保存に関する処理を分離するパターンです。
正式には Data Access Object というそうです。
データ保存とは、一般的にはデータベース製品への操作全般を意味します。
この操作方法は製品ごとに作法が違うし、なんらかのシステム改修の度に製品が変更される可能性があります。
そこでデータ保存の処理を業務自体から分離して結合度合いを低めることで、アプリケーションとデータベース製品を「疎結合」の状態にもっていけます。
また、データベース製品に精通した技術者が設計した DAO を経由して操作することにより、一般開発者が意識せずとも効率よく使える利点も有ります。
自分の経験で言うと、以下の様なケースで役立ちました。
* データベースは有償の製品を使っていたが、コスト削減の為にオープンソース製品に切り替えることが比較的容易だった
* DAO 経由以外の操作を禁止することにより、難解な SQL を書く開発者がおらず、アプリケーションの可読性や保守性が高まった
* あるデータベース特有の問題を回避するための修正が DAO の中で収まったので、業務処理に一切触れる必要が無くデグレートの危険性が少なかった
* 検索処理の高速化のために必要な修正範囲が DAO の中で収まったので、業務処理に一切触れる...
* データベース製品のバージョンアップに伴う対応が DAO の中で収まったので...
必要性ですが、
大規模な開発体制の場合ならほぼ必須。
小規模ならば、まあ趣味の範囲でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
JDONWROADER2のエラー修復
-
googleスプレッドシートのGASに...
-
ゲーム開発の入門書を探しています
-
jdk17.06のインストーラーが起...
-
「main メソッドを持つクラスが...
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
JDONWROADER2のエラー修復
-
googleスプレッドシートのGASに...
-
プログラミングの問題です。大...
-
JaneStyleのスレッドが見れなく...
-
Eclipse 動的プロジェクトで404...
-
次のhtml・cssでspan内の文字を...
-
「main メソッドを持つクラスが...
-
ゲーム開発の入門書を探しています
-
正規表現について質問です。 カ...
-
マイクラでPythonのプログラミ...
-
JAの支部?地域の農協のカード...
-
配列にnullを代入すると、null...
-
jdk17.06のインストーラーが起...
-
下記問題の答えが"D"になる意味...
-
結果的につかあなかったけど
-
jdbcでinsert,delete,createをe...
-
googleスプレッドシートのスク...
-
eclipse実行ができない
-
eclipseで作ったプログラムを他...
おすすめ情報