「みんなの翻訳」は、世界中の文書をみんなで協力して翻訳するサイトです。

みんなの翻訳ロゴ
ブクタブ
翻訳サイト

カテゴリ一覧

このサイトについて 新規登録はこちら お試し翻訳

一覧

2017/07/28

メンテナンス終了のお知らせ

2017/7/25-2017/7/28に実施したメンテナンスは、2017/7/28/14:20に終了いたしました。 ご協力をいただき、ありが…

List

Hnoss

English⇒Japanese

shikimi

English⇒Japanese

sysInfo

English⇒Japanese

tkkobe

English⇒Japanese

ホームWikipedia翻訳一覧 > Wikipedia翻訳

Wikipedia翻訳

Data access object(DAO)

法律: 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))

PDF
更新日:2017-03-20 13:35:49 shikimi 1  del.icio.usに追加   はてなブックマークに追加   twitterに投稿   facebookでshare
[ 原文 ] https://en.wikipedia.org/wiki/Data_access_object Creative Commons License この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス
翻訳者ページをみる

この記事の翻訳者

shikimi さんの翻訳記事

抵抗のための再検討:ジェンダーに基づく暴力を終わらせるための活動の歴史

抵抗のための再検討:ジェンダーに基づく暴力を終わらせるための活動の歴史 2017年11月8日 記憶は抵抗である。あなたの話が沈黙させられ挑まれたなら、真実を覚えていることは決定的に…2017-11-11 13:06:56

エアギャップ(ネットワーク関係)

エアギャップ(ネットワーク関係) エアギャップ(air gap:空隙)またはair wall(空気壁)、エア・ギャッピング[1]とは、ネットワーク・セキュリティ対策であり、一つあるいは複数の…2017-11-04 15:04:51

HTTP公開鍵ピニング

HTTP公開鍵ピニング HTTP公開鍵ピニング(HPKP: HTTP Public Key Pinning)[1]とは、HTTPヘッダによって実現されるセキュリティの仕組みであり、HTTPSのウェブサイトが、間違って発行…2017-10-01 12:05:50

ダブル・ラチェット・アルゴリズム

ダブル・ラチェット・アルゴリズム 「ダブル・ラチェット」はこの項目へ転送されています。工具については レンチ を参照下さい。 暗号技術において、ダブル・ラチェット・アルゴリズ…2017-09-03 12:17:25