¿Qué problema resuelve el patrón Repository?
Opciones
- El control de versiones del código fuente de un proyecto
- Ocultar la persistencia detrás de una interface tipo colección (Opción correcta)
- Guardar en caché respuestas HTTP para reducir la carga del servidor
- Gestionar las dependencias de paquetes entre módulos
Respuesta
Ocultar los detalles de persistencia detrás de una interface tipo colección para que la lógica de dominio no dependa del ORM ni del SQL
Por qué
Un repository es una clase como UserRepository con métodos simples: get(id), add(user), list_active(). Todo el SQL o el código del ORM vive dentro.
La lógica de negocio solo habla con el repository, así que no le importa si los datos vienen de PostgreSQL, de una API o de un diccionario en memoria.
En los tests lo cambias por un repository en memoria: rápido y sin base de datos.
Recuerda
Repository = una puerta limpia entre la lógica de negocio y la base de datos.