shikimi

shikimi

カレンダー

ブックマークタグ

登録情報はありません。
リファレンス

first-time visitors
user guide
謝辞

「みんなの翻訳」は情報通信研究機構言語翻訳グループ東京大学図書館情報学研究室による共同プロジェクトであり、三省堂国立情報学研究所連想情報学研究開発センターが開発に協力しています。三省堂には「グランドコンサイス英和辞典(36万項目収録)」の使用を許可していただきました。

連携研究グループはこちらをご覧ください。

「みんなの翻訳」を使っている翻訳グループについてはこちらをご覧ください。

バナー

logo

ポスター

poster

フライヤー

poster poster
Mozilla Firefox ブラウザ無料ダウンロード
本サイトはブラウザ「Mozilla Firefox」推奨です。
Firefox3で動作確認しています。

Valid XHTML 1.0 Transitional

site_image
Data access object
https://en.wikipedia.org/wiki/Data_access_object
shikimi shikimi     最終更新:2017-03-20 13:35:49    PDF


文書タグ: IT百科事典

Data Access Object(DAO)

この記事はソフトウェア・デザインパターンについてのものである。マイクロソフトのライブラリについてはJet Data Access Objectsを参照のこと。

コンピュータ・ソフトウェアにおいて、データ・アクセス・オブジェクト(DAO)とは、一種のデータベースや永続性機構の抽象的なインタフェースを提供するオブジェクトである。永続化層を呼び出すアプリケーションをマッピングすることで、DAOはデータベースの詳細を明らかにすることなく特定のデータの操作を可能にする。この分離は単一責任の原則を支える。それは、ドメイン固有のオブジェクトとデータ型の点からアプリケーションがどのようなデータアクセスを必要とするか(DAOのパブリック・インタフェース)を、それらの要求が特定のDBMSやデータベース・スキーマなどでどのようにして満たされることが出来るか(DAOの実装)から分離する。

このデザインパターンは以下のものに一様に適用可能である:(1 - ほとんどのプログラミング言語;2 - 永続性を必要とするほとんどの種類のソフトウェア;3 - ほとんどの種類のデータベース)。だが、伝統的にJava EE applicationと関係データベース(そのプラットフォームに関してサン・マイクロシステムズのベスト・プラクティス・ガイドライン[1]『Core J2EE Patterns』をもとにしているため、JDBC APIを介してアクセスされる)と結び付けられる。

目次

1 利点
2 欠点
3 ツールとフレームワーク
4 関連項目
5 参考文献
6 外部リンク

利点

データ・アクセス・オブジェクトを利用する利点は、互いについて知ることはできるが知るべきではなく、頻繁に独立して展開することが予期されているアプリケーションの重要な2つの部分を、比較的単純かつ厳密に分離できることである。ビジネス・ロジックの変更は同じDAOインタフェースに依存することがあるが、永続ロジックへの変更はインタフェースが適切に実装されている限りDAO clientに影響しない。格納されたものの詳細はすべてアプリケーションの他の部分からは隠される(カプセル化を参照)。このようにして、一つのDAOの実装を修正するだけで、残りのアプリケーションが影響を受けることなく、永続性機構に行われうる変更を実行することが可能となる。DAOはアプリケーションとデータベースとの間の橋渡し役をする。それらはオブジェクトとデータベースのレコードとでデータを行ったり来たりさせる。コードの単体テストは、試験のテストダブルとDAOを置き換えることで容易になり、それによってテストを永続化層に依存しないようにする。

Java プログラミング言語の非特異的背景において、設計思想としてのデータ・アクセス・オブジェクトは様々な形で実現されうる。これはデータ・アクセス部分をアプリケーション・ロジックから分離する極めて単純なインタフェースから、フレームワークや市販用の製品にまで渡る。DAOのコーディングの枠組みは多少の技術を必要とすることがある。Java Persistence APIやEnterprise JavaBeansのような技術はアプリケーション・サーバーに組み込まれるようになり、JavaEEアプリケーション・サーバーを利用したアプリケーションで使われることが可能である。TopLinkのような市販用の製品はオブジェクト関係マッピング(ORM)に基づき利用可能である。一般的なオープンソースのORM製品には、DoctrineやHibernate、iBATIS、Apache OpenJPAのようなJPA implementationsなどがある。

欠点

DAOを使用することの潜在的な欠点には、漏れのある抽象化やコードの重複、抽象化の逆転がある。とりわけ、正規のJavaオブジェクトとしてのDAOの抽象化はそれぞれのデータベース・アクセスのコストの高さを隠すことがあり、また、それ以外の場合では通常のSQLの集合演算での単一の演算で返されるであろう情報を取得するために、開発者に倍量のデータベースクエリを起動させることを強いることになる。あるアプリケーションが複数のDAOを必要とする場合、それぞれのDAOに対して本質的に同じ生成と読み取り、更新、削除のコードを繰り返していることに気付くかもしれない。しかしながら、この定型文のコードは、これらの共通の操作を取り扱う汎用のDAOを実装することで避けられるかもしれない[2]。時間消費が抑えられる。

ツールとフレームワーク

ODB C++用のコンパイラベースのオブジェクト関係マッピング(ORM)システム

ORMLite JDBCとAndroid用のJavaの軽量オブジェクト関係マッピング(ORM)フレームワーク[3]

Microsoft Entity Framework

DBIx::Class Perl用のオブジェクト関係マッピング(ORM)モジュール

関連項目

Create, read, update and delete (CRUD)

Data access layer

Service Data Objects

参考文献

1. "Core J2EE Patterns - Data Access Objects". Sun Microsystems Inc. 2007-08-02.

2. 参照: http://www.ibm.com/developerworks/java/library/j-genericdao/index.html for workarounds

3. Hodgson, Kyle; Reid, Darren. ServiceStack 4 Cookbook. Packt Publishing Ltd. p. Chapter 4. ISBN 9781783986576 . Retrieved 22 June 2016.

外部リンク

Java Persistence - The DAO Design Pattern

PHP best practices (Use Data Access Objects (DAO))

原文:https://en.wikipedia.org/wiki/Data_access_object
Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス外部リンク
新着文書(shikimi)

HTTP Public Key Pinning
HTTP公開鍵ピニング HTTP公開鍵ピニング(HPKP: HTTP Public Key Pinning)[1]とは、HTTPヘッダによって実現されるセキュリティの仕組みであり、HT...
Double Ratchet Algorithm
ダブル・ラチェット・アルゴリズム 「ダブル・ラチェット」はこの項目へ転送されています。工具については レンチ を参照下さい。 暗号技術におい...
What do women’s rights have to do with the SDGs and the internet?
女性の権利はSDGsとインターネットにどのような関係があるか? 2017年8月2日、スリランカ 女性は均質な集団ではなく、科学技術へのアクセスもまた、...
Sexual rights and the internet: Third EROTICS global survey now launched!
性的権利とインターネット:第3回EROTICS国際調査、現在開始! 2017年7月19日 EROTICS国際調査が戻ってきた! もしあなたが、インターネットを自ら...

新着文書

GitLab Pages documentation
GitLab Documentation > User documentation > Projects >GitLab Pages 説明書  GitLabには「Gi...
GitLab Pages administration
  はじめに GitLab Pages機能 は、GitLab EE 8.3以降から使えるようになりました。 カスタムCNAMEにTLS証明書が使えるようになった のは、...
Tutorial: Securing your GitLab Pages with TLS and Let's Encrypt  | about gitlab.com / Guest author André Miranda
 GitLab Pagesで作られたサイトを、 Let's Encrypt でHTTPS化する方法をお教えします。   どうしてTLS/SSLが必要か  HTTPSについて話し...

新着Wikipedia翻訳

HTTP Public Key Pinning
HTTP公開鍵ピニング HTTP公開鍵ピニング(HPKP: HTTP Public Key Pinning)[1]とは、HTTPヘッダによって実現されるセキュリティの仕組みであり、HT...
Double Ratchet Algorithm
ダブル・ラチェット・アルゴリズム 「ダブル・ラチェット」はこの項目へ転送されています。工具については レンチ を参照下さい。 暗号技術におい...
aplay
 aplayとは ALSA sound card driver 用の コマンドライン オーディオファイルプレーヤーである。復数種類の ファイル形式 、様々なデバイスのサ...

更新履歴

キャンセル
ブックマーク登録

タグを「;(半角セミコロン)」区切りで入力して下さい(例)tag1;tag2;tag3
10タグまで登録可能。各タグ30文字まで

履歴
状態 作業中 作業予定あり 作業予定なし 作業完了
テーマ 社会 政治 法律 経済 文化 芸能 科学技術 IT 健康/医療 スポーツ メディア 植物 動物 菌類 地方 国際
地域 日本 東アジア アフリカ 南アジア 東南アジア 西アジア/中東 太平洋 北米 中南米 欧州
ジャンル ニュース 解説記事 論文 日記 百科事典

コメントを入力して下さい
0 / 250
    
ブックマーク登録

ブックマークに登録しました。


言語選択

    
ファイルプロパティ

使用許諾条件
ファイル情報
あなただけがこのファイルを閲覧・編集できます。
みんながこのファイルを閲覧できますが、
編集ができるのはあなただけです。
あなたに加えて、指定された人やグループが
このファイルを自由に閲覧・編集できます。
公開設定
編集設定
グループ:0組 翻訳者:0人
    
アクセス属性
この文書は「非公開」設定になっています。
一般公開する場合は、編集ページの書誌情報で「公開」設定に変更して下さい。
翻訳者選択

※メニュー「翻訳者管理」で翻訳者、グループを追加することができます。


    
ノート

非公開ノート
0 / 2000 ※「公開・編集」権限を持つ翻訳者のみに公開されます。
公開ノート
0 / 2000 ※文書を「公開」にした場合、一般に公開されます。

言語選択

 →