Java 为数据库以外的数据源设计DAO
到目前为止,我已经习惯于使用DAOs从数据库检索信息。不过,其他数据来源也是可能的,我想知道这种模式是否以及如何在总体上得到应用 例如,我现在正在开发一个在web上获取XML的应用程序。XML文件可以被视为一个数据源,实际获取原则上类似于数据库请求。不过,我不太确定DAO是如何构造的 欢迎对此主题发表任何意见。例如,请参阅此处的“将非数据库数据资源封装为DAO类”一节:Java 为数据库以外的数据源设计DAO,java,xml,fetch,dao,Java,Xml,Fetch,Dao,到目前为止,我已经习惯于使用DAOs从数据库检索信息。不过,其他数据来源也是可能的,我想知道这种模式是否以及如何在总体上得到应用 例如,我现在正在开发一个在web上获取XML的应用程序。XML文件可以被视为一个数据源,实际获取原则上类似于数据库请求。不过,我不太确定DAO是如何构造的 欢迎对此主题发表任何意见。例如,请参阅此处的“将非数据库数据资源封装为DAO类”一节: 由于DAO仅以对象的形式表示CRUD操作,而从未引用它们的数据源,我不明白为什么这是一个问题。如果DAO以满足这些条件的接口开
由于DAO仅以对象的形式表示CRUD操作,而从未引用它们的数据源,我不明白为什么这是一个问题。如果DAO以满足这些条件的接口开始,那么客户端不需要知道它是用XML还是关系数据库实现的
NET的LINQ成功地扭转了这一局面。也许这是针对这个问题可以模拟的另一种设计。您的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
}
}
好的,所以界面是最重要的。将实际获取数据的代码放在DAO中是一种好的做法,还是应该将其放在单独的类中?对于XML文件,这涉及使用URLConnection和DataInputStream。还有一些线程,因为一次要检索多个文件。获取数据似乎属于我的实现。不止一个文件?您正在将两个XML源连接到一组对象中?我现在正在编写一种RSS提要聚合器。因此,我想知道DAO模式是否真的合理。另外,如果我考虑从网上检索数据(例如:货币值),然后将其保存在本地,这会让我更加困惑。谢谢。该页面中的以下链接应该很有用: