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ランキング
-
JDONWROADER2のエラー修復
-
正規表現について質問です。 カ...
-
Googleログインボタンのデザイ...
-
「main メソッドを持つクラスが...
-
jdbcでinsert,delete,createをe...
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
googleスプレッドシートのGASに...
-
オブジェクト指向プログラミン...
-
自作Androidアプリのデータ引き...
-
14行目のthisはどこを指してい...
-
googleスプレッドシートのスク...
-
Verilogについて質問です。この...
-
次のhtml・cssでspan内の文字を...
-
Eclipse 動的プロジェクトで404...
-
EclipseとVisual StudioをPC1台...
-
eclipse実行ができない
-
Processingでマウスクリックで...
-
スプレッドシートからリマイン...
-
論理回路設計をVerilogで行う問...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
JDONWROADER2のエラー修復
-
Googleログインボタンのデザイ...
-
正規表現について質問です。 カ...
-
「main メソッドを持つクラスが...
-
googleスプレッドシートのGASに...
-
配列にnullを代入すると、null...
-
jdbcでinsert,delete,createをe...
-
jdk17.06のインストーラーが起...
-
eclipseで作ったプログラムを他...
-
マイクラでPythonのプログラミ...
-
eclipse実行ができない
-
問題作成のWebアプリの作り方を...
-
Eclipse 動的プロジェクトで404...
-
直し方について教えて頂きたい...
-
次のhtml・cssでspan内の文字を...
-
Verilogについて質問です。この...
-
EclipseとVisual StudioをPC1台...
-
プログラムの単体テストで金額...
-
ゲーム開発の入門書を探しています
おすすめ情報