Pregunta

Hasta ahora he estado acostumbrado a utilizar DAO para recuperar información de bases de datos. aunque son posibles otras fuentes de datos y me pregunto si y cómo el patrón podría aplicarse en general.

Por ejemplo, ahora estoy trabajando en una aplicación que recupera XML en la web. El archivo XML puede ser considerado como una fuente de datos y el ir a buscar real es similar en principio a una solicitud de base de datos. No estoy muy seguro de cómo el DAO podría estructurarse sin embargo.

Cualquier punto de vista sobre el tema son bienvenidos.

¿Fue útil?

Solución

Véase, por ejemplo, "El encapsulado de los recursos de datos no-base de datos como clases DAO" sección aquí:

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

Otros consejos

Desde DAOs sólo expresan las operaciones CRUD en términos de objetos, sin referirse a su fuente de datos, no puedo ver por qué esto es una pregunta. Si su DAO comienza con una interfaz que cumpla con los criterios de los clientes no necesitan saber si es o no se implementa en términos de XML o una base de datos relacional.

de .NET LINQ logra convertir ese truco. Tal vez es otro diseño que puede emular a este problema.

Sus DAO ofrece métodos genéricos que son - como ya se ha dicho - independiente de cualquier fuente de datos. Por lo tanto se crea una interfaz DAO y luego acaba de proporcionar diferentes implementaciones. Otras clases entonces sólo utilizan la interfaz 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
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top