390

ドキュメントを調べていて、 という用語に出くわしましたDAO。それがデータ アクセス オブジェクトであることがわかりました。誰かがこれが実際に何であるかを説明してもらえますか?

さまざまな種類のソースからデータにアクセスするための何らかのインターフェイスであることは知っていますが、このちょっとした調査の途中で、データ ソースまたはデータ ソース オブジェクトと呼ばれる概念に出くわし、頭の中で混乱してしまいました。

DAOaがどこで使用されているかという点で、プログラムでa が何であるかを本当に知りたいです。どのように使用されますか?この概念を非常に基本的なものから説明しているページへのリンクも歓迎します。

4

13 に答える 13

505

データ アクセス オブジェクトは、基本的に、基盤となるデータベースまたはその他の永続ストレージへのアクセスを提供するオブジェクトまたはインターフェイスです。

その定義から: http://en.wikipedia.org/wiki/Data_access_object

こちらのシーケンス図も確認してください: http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

簡単な例は、概念を理解するのに役立つかもしれません:

従業員を表すエンティティがあるとします。

public class Employee {

    private int id;
    private String name;


    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

Employee従業員エンティティは、データベース内の対応するテーブルに永続化されます。従業員エンティティを操作するために必要なデータベース操作を処理する単純な DAO インターフェイスは次のようになります。

interface EmployeeDAO {

    List<Employee> findAll();
    List<Employee> findById();
    List<Employee> findByName();
    boolean insertEmployee(Employee employee);
    boolean updateEmployee(Employee employee);
    boolean deleteEmployee(Employee employee);

}

次に、SQL サーバーを処理するためのインターフェイスの具体的な実装と、フラット ファイルなどを処理するための別の実装を提供する必要があります。

于 2013-10-03T08:36:12.043 に答える
98

データアクセスオブジェクト(DAO)とは-

これは、データ ストレージのデータベースからデータにアクセスするために使用されるオブジェクト/インターフェイスです。

DAO を使用する理由:

データベースなどのデータ リソースからのデータの取得を抽象化する。
その概念は、「データ リソースのクライアント インターフェイスをそのデータ アクセス メカニズムから分離する」ことです。
 

データに直接アクセスする際の問題は、データのソースが変更される可能性があることです。たとえば、アプリケーションが Oracle データベースにアクセスする環境にデプロイされているとします。その後、Microsoft SQL Server を使用する環境にデプロイされます。アプリケーションでストアド プロシージャとデータベース固有のコード (数列の生成など) を使用する場合、アプリケーションでそれをどのように処理しますか? 次の 2 つのオプションがあります。

  • Oracle の代わりに SQL Server を使用するようにアプリケーションを書き直します (または、違いを処理する条件付きコードを追加します)。
  • アプリケーション ロジックとデータ アクセス レイヤーの間にレイヤーを作成する

DAO パターンは次のもので構成されます。

  • データ アクセス オブジェクト インターフェイス- このインターフェイスは、モデル オブジェクトで実行される標準操作を定義します。
  • データ アクセス オブジェクト具象クラス- このクラスは上記のインターフェイスを実装します。このクラスは、 データベース/xml またはその他のストレージ メカニズムであるデータソースからデータを取得する責任があります。
  • モデル オブジェクトまたは値オブジェクト- このオブジェクトは、DAO クラスを使用して取得したデータを格納するためのget/set メソッドを含む単純な POJOです。

例を見る

これで、DAO についての理解が深まったことを願っています。

于 2015-07-31T08:20:52.513 に答える
15

DAO (Data Access Object) は、エンタープライズ アプリケーションでよく使用されるデザイン パターンです。これは基本的に、あらゆるソース (DBMS、XML など) からのデータにアクセスするために使用されるモジュールです。次のようないくつかの例を読むことをお勧めします。

DAO の例

元のDAO パターンを実装するにはさまざまな方法があり、作業を簡素化できるフレームワークが多数あることに注意してください。たとえば、iBatis や Hibernate などの ORM (Object Relational Mapping) フレームワークは、SQL クエリの結果を Java オブジェクトにマップするために使用されます。

それが役に立てば幸いです、さようなら!

于 2013-10-03T08:36:52.480 に答える
9

データ アクセス オブジェクト パターンまたは DAO パターンは、低レベル データ アクセス API または操作を高レベル ビジネス サービスから分離するために使用されます。以下は、データ アクセス オブジェクト パターンの参加者です。

データ アクセス オブジェクト インターフェイス - このインターフェイスは、モデル オブジェクトで実行される標準操作を定義します。

データ アクセス オブジェクト具象クラス - このクラスは上記のインターフェイスを実装します。このクラスは、データベース/xml またはその他のストレージ メカニズムであるデータソースからデータを取得する責任があります。

モデル オブジェクトまたは値オブジェクト - このオブジェクトは、DAO クラスを使用して取得したデータを格納するための get/set メソッドを含む単純な POJO です。

サンプルコードはこちら..

于 2014-06-15T06:22:00.253 に答える
6

私はあなたがオラクルのウェブサイトで見つけることができる最良の例(説明とともに)だと思います:ここ. 別の優れたチュートリアルがここにあります。

于 2013-10-03T08:41:42.917 に答える
4

データ アクセス オブジェクトは、データ ソースとの接続を管理してデータを取得および保存します。ビジネス オブジェクトの基礎となるデータ アクセスの実装を抽象化し、データ ソースへの透過的なアクセスを可能にします。データ ソースは、RDBMS、XML リポジトリ、フラット ファイル システムなどの任意のデータベースです。

于 2014-06-18T06:54:06.807 に答える
2

Dao クラスは jdbc ロジックを再利用するために使用され、Dao(Data Access Object) は設計パターンです。dao は、JDBC ロジックを含む単純な Java クラスです。

データ アクセス層は、別個のビジネス ロジック層と永続層で優れていることが証明されています。DAO 設計パターンは、データ アクセスの実装をクライアントから完全に隠します。

Java Data Access Object (Java DAO) は、ビジネス アプリケーションの重要なコンポーネントです。ビジネス アプリケーションはほとんどの場合、リレーショナル データベースまたはオブジェクト データベースからのデータにアクセスする必要があり、Java プラットフォームはこのデータにアクセスするための多くの手法を提供します。最も古く、最も成熟した手法は、Java Database Connectivity (JDBC) API を使用することです。これは、データベースに対して SQL クエリを実行し、一度に 1 列ずつ結果をフェッチする機能を提供します。

于 2016-07-13T06:35:36.963 に答える