El patrón de diseño DAO facilita el acceso a fuentes de datos a través de elementos transitorios denominados "transfer objects", estos objectos no son mas que simples clases. Una gran ventaja de este patrón, es de la separación exclusiva de las tareas de acceso de datos, dejando a los demas componentes involucrados hacer su trabajo de forma transparente.

Pueden revisar una introducción muy completa en: Patrones de diseño.

El artículo enlazado arriba es muy completo, no pretendo repetir lo que ahi indica, solamente agregar ciertos comentarios y modificaciones a las implementaciones de ejemplo.


Debido a que los objetos DAO proveen operaciones CRUD comunes, no es necesario escribir las operaciones en las interfaces de cada uno de los DAOs, por ejemplo:



Seria muy engorroso hacer esto para cada entidad que manipulemos, pero podemos simplificar las cosas de esta forma:



De esta forma, evitamos repetir la definicion de las operaciones (véa DRY).

Se puede hacer aún mas, utilizando clases abstractas, pero es algo que preferiría evitar, ... nunca me gustaron las herencias... pero tal vez para la segunda parte, nos vemos.