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 回答