Contenido del curso
Conceptos detrás de las Arquitecturas Limpias
Arquitecturas de referencia
Dominio de una arquitectura
- 11

Errores que rompen el encapsulamiento del dominio
08:36 min - 12

Transaction Script: cuándo usarlo y sus límites
08:25 min - 13

Inyección de Dependencias e Inversión de Control en Java
07:40 min - 14

Qué es el modelo de dominio en POO
06:43 min - 15

Capa de Servicios y Fachada en la Arquitectura de Software
04:19 min - 16

Casos de uso en Clean Architecture con C#
07:08 min - 17

CQRS: separar comandos e consultas em C#
11:59 min
Capa externa
- 18

Acceso a datos en arquitectura limpia
Viendo ahora - 19

Patrón Repository para separar datos del dominio
08:17 min - 20

REST APIs en arquitectura limpia con Spring Boot
05:27 min - 21

Implementación de Integraciones con el Patrón Adapter en Arquitectura Limpia
09:06 min - 22

Pruebas Unitarias en Arquitecturas Limpias con Java y Spring Boot
05:38 min - 23

Mocks y stubs en pruebas de integración
09:26 min
Cierre
Acceso a datos en arquitectura limpia
Resumen
El acceso a datos en arquitectura limpia sigue siendo un pilar de cualquier aplicación, aunque la base de datos deje de ser el centro del diseño. Aquí entenderás por qué conviene moverla a la capa de infraestructura, qué fuentes de información entran en juego y cómo esa decisión te facilita las pruebas. Es una guía pensada para desarrolladores que vienen de MVC o de la arquitectura de tres capas y quieren dar el salto a un enfoque más flexible.
¿Por qué sacar la base de datos a la capa de infraestructura?
La duda aparece casi siempre: si ya tengo mi motor relacional, ¿para qué complicarme separándolo? La respuesta corta es que el acoplamiento directo te limita más de lo que crees [0:50].
Un argumento clásico es la portabilidad entre motores: hoy uso SQL Server, mañana migro a MySQL o Postgres. Suena bien, pero en la práctica casi nadie cambia de base de datos con frecuencia. Es costoso a nivel de infraestructura y de desarrollo, y el dialecto de SQL varía entre motores, así que lo que corre en uno puede romperse en otro [2:10].
¿La razón principal para separar la base de datos es poder migrar de motor? No. Las migraciones reales son la excepción. La verdadera razón es que tu sistema rara vez depende de una sola fuente de datos y necesitas poder probarlo sin levantar toda la infraestructura.
¿Cuáles son las fuentes de datos más comunes en una aplicación moderna?
Pensar que toda la información vive en una sola base de datos relacional es irreal. En entornos interconectados, tu sistema suele leer y escribir desde varios lugares.
Bases de datos de legado y sistemas antiguos
Cuando construyes un sistema nuevo dentro de una empresa, lo normal es que existan aplicaciones previas con las que tienes que integrarte. A veces te conectas directamente a sus bases de datos porque la información no se ha podido migrar al nuevo modelo [3:30]. Tu base de datos puede estar perfectamente organizada, pero igual vas a leer datos de un sistema viejo que sigue operando.
Archivos como fuente de información
No todo está en tablas. Mucha información circula en archivos XML, JSON u hojas de cálculo, sobre todo cuando los usuarios manipulan esos documentos a mano y no existe una interfaz intermedia [4:40]. Tu aplicación tendrá que leerlos y, en algunos casos, escribirlos.
Sistemas de terceros: CRM, ERP y motores de búsqueda
Un CRM, un ERP o cualquier herramienta SaaS que use el equipo se convierte en fuente de datos. No es una base de datos como tal, pero sí un origen del que extraes o hacia el que envías información para mantener todo sincronizado [5:20].
Los motores de búsqueda como Algolia o Elasticsearch entran en la misma categoría. Sincronizas datos hacia ellos para que el usuario consulte rápido sobre grandes volúmenes, aunque la fuente original siga siendo otra [6:00].
¿Qué cuenta como fuente de datos en una arquitectura limpia? Cualquier origen del que tu aplicación lea o al que escriba: bases de datos relacionales, archivos JSON o XML, APIs de terceros, CRMs, ERPs y motores de búsqueda como Elasticsearch o Algolia.
¿Cómo facilita las pruebas separar el acceso a datos?
Aquí está la razón más fuerte para mover la base de datos a la infraestructura: poder probar bien tu lógica de negocio. Cuando esa lógica está acoplada al acceso a la base de datos, el testing se vuelve un dolor de cabeza [6:40].
Para probar necesitas:
- Una base de datos disponible que no sea la de producción.
- Información cargada y relevante para cada caso de prueba.
- Mantener ese entorno limpio entre ejecuciones.
Si en cambio defines una interfaz para el acceso a datos y la implementas en la capa de infraestructura, puedes sustituir esa implementación por objetos especiales durante las pruebas. Eso hace que los tests corran muchísimo más rápido y sin depender de un motor real [7:30]. La idea de usar objetos sustitutos para aislar dependencias es un recurso central del diseño orientado a pruebas, y se apoya en el principio de inversión de dependencias que ya viste en módulos anteriores.
El siguiente paso: el patrón Repository
Lo que sigue es darle forma concreta a estas ideas con el patrón Repository, que estructura el acceso a fuentes de información detrás de una interfaz clara y consistente. Ahí vas a ver cómo conectar la teoría con código real.
¿En tu proyecto actual cuántas fuentes de datos distintas conviven? Cuéntame en los comentarios cuál te ha dado más problemas a la hora de separar la lógica.