Data Access Object

曖昧さ回避 マイクロソフトのライブラリの「Data Access Objects」とは異なります。

Data Access ObjectDAO)とは、ある種のデータベースや永続性機構の抽象化されたインタフェースを提供するオブジェクトであり、データベースの詳細を開示することなく特定の操作を提供する。

なお、マイクロソフトのライブラリであるData Access Objectsとは直接の関係はない。

概要

Data Access Objectは問題を、ドメイン固有のオブジェクトとデータ型を使ってアプリケーションにどのようなデータアクセスが必要であるかという点(DAOの公開インタフェース)と、それらのニーズを特定のDBMSやデータベーススキーマでどのように満足するかという点(DAOの実装)に分離する。

このデザインパターンは多くのプログラミング言語で利用可能であり、多くの永続性を必要とするアプリケーションや多くのデータベースで利用可能である。しかし、サン・マイクロシステムズベストプラクティスガイドライン[1] ("Core J2EE Patterns") が発祥であるため、JDBC APIを経由してJakarta EEから関係データベースにアクセスする際に適用されることが多い。

利点

DAOを利用する際の利点は、アプリケーションの重要な2つの部分間の比較的単純で厳密な分離を可能にする点であり、それによって各部が互いのことをほとんど知らなくて済むようにし、独立に修正可能となる。ビジネスロジックの変化は、インタフェースが正しく実装される限り、DAOクライアントに影響しない。

Javaに関しては、Data Access Objectは数々の複雑で多様なJava 永続性技術JDBCJDOEJB CMP、TopLink、HibernateiBATISなど)からアプリケーション本体を隔離するのに利用される。Data Access Objectを使うと、基盤となる技術を更新/置換しても、アプリケーションの他の部分を変更する必要がない。

脚注

注釈

出典

  1. ^ “Core J2EE Patterns - Data Access Object”. Sun Microsystems Inc. (2002年). 2007年8月2日閲覧。

関連項目

外部リンク

  • サルでもわかる 逆引きデザインパターン - DAO (Data Access Object)
デザインパターン
GoFによる23種のパターン
生成に関するパターン
構造に関するパターン
振る舞いに関するパターン
並行性に関するパターン
  • Active object(英語版)
  • Balking(英語版)
  • Double-checked locking(英語版)
  • Event-based asynchronous(英語版)
  • Guarded suspension(英語版)
  • Join(英語版)
  • ロック
  • モニタ
  • Proactor(英語版)
  • Reactor
  • Readers–writer lock(英語版)
  • Scheduler(英語版)
  • Thread pool(英語版)
  • スレッド局所記憶
アーキテクチャに関するパターン
その他のパターン
関連する人々
関連項目
  • 一覧記事一覧
  • カテゴリカテゴリ
  • コモンズコモンズ