为数据库以外的数据源设计DAO

时间:2010-03-28 13:10:24

标签: java xml fetch dao

到目前为止,我已经习惯使用DAO从数据库中检索信息。其他数据来源是可能的,我想知道这种模式是否以及如何应用。

例如,我现在正在开发一个在Web上获取XML的应用程序。 XML文件可以被视为数据源,实际的提取原则上类似于数据库请求。我不太确定如何构建DAO。

欢迎任何有关该主题的观点。

3 个答案:

答案 0 :(得分:4)

请参阅此处的“将非数据库数据资源封装为DAO类”部分:

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

答案 1 :(得分:4)

由于DAO只根据对象表示CRUD操作,而没有引用它们的数据源,我不明白为什么这是一个问题。如果您的DAO以符合这些条件的接口开头,则客户端无需知道它是否以XML或关系数据库的形式实现。

.NET的LINQ设法改变这一伎俩。也许这是另一种可以模仿这个问题的设计。

答案 2 :(得分: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
    }
}