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

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

カテゴリ一覧

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

一覧

2015/07/07

復旧のお知らせ

2015/06/08 ~ 2015/07/07 の期間、サーバ障害によりサービスが利用できない状況になっておりました。 現在は復…

List

Hnoss

English⇒Japanese

shikimi

English⇒Japanese

tkkobe

English⇒Japanese

K0hei22

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 さんの翻訳記事

Trust on first use

Trust on first use その他の用法については「 Tofu(曖昧さ回避) 」をご覧ください。 Trust On First Use (TOFU)または Trust Upon First Use (TUFU)とは、未知あるいはま…2017-07-09 19:19:20

Cryptocat

Cryptocat -------- 【画像のキャプション】Windows 10でのCryptocat 3.1.24 最初の作成者:Nadim Kobeissi 開発者:Nadim Kobeissiと貢献者たち[1] 最初のリリース:2011年5月19日…2017-06-17 11:11:14

フィリピンにおけるオンラインでの女性の権利を測定する

フィリピンにおけるオンラインでの女性の権利を測定する APC for Foundation for Media Alternatives 2017年4月11日、フィリピン オンラインでの女性の権利をどのように測定すればよい…2017-05-28 11:18:29

ラッパー関数

ラッパー関数 ラッパー関数とは、二次的なサブルーチンの呼び出し[1]や追加のコンピュータ操作をほとんど必要としないシステム・コールを主な目的とした、ソフトウェアライブラリやコ…2017-05-27 11:24:02