到目前为止,我已经习惯使用DAO从数据库中检索信息。其他数据来源是可能的,我想知道这种模式是否以及如何应用。
例如,我现在正在开发一个在Web上获取XML的应用程序。 XML文件可以被视为数据源,实际的提取原则上类似于数据库请求。我不太确定如何构建DAO。
欢迎任何有关该主题的观点。
答案 0 :(得分:4)
请参阅此处的“将非数据库数据资源封装为DAO类”部分:
答案 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
}
}