> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud8-persistencia-en-bases-de-datos/patron-dao-data-access-object.md).

# Patrón DAO (Data Access Object)

O patrón DAO é un patrón que se encarga da abstracción do acceso á base de datos (ou calquera fonte de datos). O seu propósito é encapsular a lóxica necesaria para interactuar cos datos e prover un interfaz limpo para a capa de servizos ou outras capas.

<figure><img src="/files/Ox1nBzKrwhy6YExPiAEe" alt=""><figcaption></figcaption></figure>

## Vantaxes de empregar a arquitectura DAO

As principais vantaxes que se poden identificar no emprego de este patrón son as seguintes:

* **Desacoplamento e Abstracción:** O DAO actúa como unha interface entre a lóxica de negocio e a persistencia. Isto oculta a complexidade das consultas SQL ou as APIs de baixo nivel, ofrecendo un acceso uniforme independentemente da orixe dos datos
* **Separación de responsabilidades:** Cada unha das capas da arquitectura ten a súa responsabilidade:
  * O **Modelo de datos ou Entity** encargase de representaro modelo de datos da base de datos na aplicación
  * O **DAO** encargase da xestion da persistencia contra un SXBD concreto
  * O **Servicio (Service Layer)** encargase de xestionar a lóxica de negocio da aplicación, realizar validacións, etc... Delega o acceso a datos nos DAO, que vai a conter como obxectos que pode chamar.
* **Facilita os cambios na aplicación.** Se no futuro decidimos cambiar de almacenamento de un SXBD como MySQL, a outro xestor coma Oracle, só temos que modificar o DAO, sen afectar o resto da aplicación.
* **Facilita as probas**: As arquitecturas baseadas en capas facilitan de maneira xeral o testeo.
  * A nivel de **probas unitarias**, unicamente haberá que probar o compoñente modificado
  * A nivel de **probas integradas**, unicamente habrá que probar os compoñentes que interactúen con este compoñente modificado


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud8-persistencia-en-bases-de-datos/patron-dao-data-access-object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
