0

これまで、DAO を使用してデータベースから情報を取得することに慣れていました。ただし、他のデータソースも可能であり、パターンを一般的に適用できるかどうか、またどのように適用できるか疑問に思っています。

たとえば、私は現在、Web 上で XML をフェッチするアプリケーションに取り組んでいます。XML ファイルはデータ ソースと見なすことができ、実際のフェッチは原則としてデータベース リクエストに似ています。ただし、DAOをどのように構成できるかはよくわかりません。

この件に関する意見は大歓迎です。

4

3 に答える 3

4

たとえば、「データベース以外のデータリソースをDAOクラスとしてカプセル化する」セクションを参照してください。

http://java.sun.com/blueprints/patterns/DAO.html

于 2010-03-28T13:21:58.550 に答える
4

DAO はオブジェクトの観点から CRUD 操作を表現するだけであり、データ ソースを参照することはないため、なぜこれが問題なのかわかりません。DAO がこれらの基準を満たすインターフェイスで始まる場合、クライアントは、それが XML またはリレーショナル データベースの観点から実装されているかどうかを知る必要はありません。

.NET の LINQ は、このトリックをなんとか覆します。この問題をエミュレートできるのは、別の設計である可能性があります。

于 2010-03-28T13:34:59.413 に答える
2

DAO は、既に述べたように、どのデータソースにも依存しないジェネリック メソッドを提供します。したがって、DAO インターフェイスを作成してから、さまざまな実装を提供するだけです。他のクラスは、DAO インターフェイスのみを使用します。

public interface DummyDao
{
    Dummy getDummy(String id);
}

public class SqlDummyDao implements DummyDao
{
    public Dummy getDummy(String id)
    {
        // Do sql stuff and mapping to dummy bean here
    }
}

public class XmlDummyDao implements DummyDao
{
    public Dummy getDummy(String id)
    {
        XmlDocument xml = fetchRemoteXml(id);
        // do xml mapping to dummy bean here
    }
}
于 2010-03-28T13:35:56.607 に答える