初心者が個人的な勉強のためにまとめてみたものです。
DAO(Data Access Object)
・簡単に言うと、データベースへのアクセスを専門に扱うDAOというクラスを作り、データベース関連のことはすべて任せてしまう考え方
・JavaEEのデザインパターンの1つ
####DAO独自の特徴
1.データアクセスをクラスに抽象化することで,具体的なデータソースをビジネス層から隠蔽でき、依存せずに済む
→具体的なデータソースを隠蔽することができるというのは、データソースが変わってもインターフェイスさえ決まっていれば,ビジネス層がその変更を意識する必要がないという意味。例えば,今は postgresqlをつかっていて,将来的に Oracle に変更するとき、ビジネス層がその変更を意識する必要がなくなり修正点はDAOだけになる。これは、永続層(プログラム終了後もデータが失われないようにデータを保存する層)が CSV ファイルや XML-DB のような RDBMS 以外になる場合(ウェブサービスを使うとか)でも,ビジネス層はそれを意識しなくて済むということでもある。
→データベースにおいてもアクセスしているのは原則DAOだけなので、データベースのテーブル構成が変更になっても、影響を受けるのはDAOだけになる。
2.SQL になじみのないプログラマが SQL を意識しないで永続層にアクセスできる。
→データベース接続後に切断する場合には、接続の際に取得したConnectionインターフェースのオブジェクトに対して、closeメソッドを使わなくてはいけないが、閉じるの忘れたときにガベージコレクタによってオブジェクトの破棄と同時に自動的にコネクションを閉じてくれ、システム全体から見て**品質(信頼性)は向上する。**だが、これはミスをした時のものであり、利用しなくなったデータベースへの接続は速やかに切断するべき。
###参考文献
http://qune.jp/archive/001266/index.html
https://ts0818.hatenablog.com/entry/2017/07/10/223553
https://techacademy.jp/magazine/19443