Este documento explica los diferentes enfoques para mapear modelos entre capas (web, aplicación, dominio, persistencia) en el desarrollo de software.
📝 ¿Qué es?
Cada capa tiene su propio modelo, con mapeo explícito entre ellos.
✅ Ventajas:
- Máxima separación de responsabilidades
- Evita acoplamientos indeseados
- Ideal para testing y evolución independiente
- Mucho código de mapeo (boilerplate)
- Desarrollo más lento inicialmente
🎯 Usar cuando:
- Dominios complejos (reglas de negocio intensas)
- Necesidad de máximo desacoplamiento
- Equipos grandes o microservicios separados
📝 ¿Qué es?
Mismo modelo en todas las capas (DTOs = entidades).
✅ Ventajas:
- Implementación súper rápida
- Fácil comprensión para equipos pequeños
- Ideal para CRUDs simples
- Alto acoplamiento entre capas
- Difícil mantenimiento a largo plazo
🎯 Usar cuando:
- Desarrollo de MVP/prototipos
- Backends administrativos simples
- Proyectos con poca evolución prevista
📝 ¿Qué es?
Mapeo bidireccional (DTO ⇄ Entidad), usualmente con interfaces compartidas.
✅ Ventajas:
- Permite modificación de objetos existentes
- Útil para flujos de ida y vuelta
- Riesgo de diseño confuso
- Posible acoplamiento accidental
🎯 Usar cuando:
- Validaciones con feedback
- Uso de ORMs como Hibernate
- Casos de uso con updates frecuentes
📝 ¿Qué es?
Transformación unidireccional con interfaz común (ej: AccountState).
✅ Ventajas:
- Flujo de datos claro (una dirección)
- Evita ciclos de dependencia
- Menos clases que Full Mapping
- Menos desacoplado que Full Mapping
- Posible duplicación de lógica
🎯 Usar cuando:
- Arquitectura limpia pero práctica
- Equipos que buscan equilibrio velocidad/orden
- Dominios moderadamente complejos
Estrategia | Casos de Uso Ideales | Complejidad |
---|---|---|
Full Mapping | Dominios complejos, equipos grandes, sistemas críticos | Alta |
No Mapping | MVPs, CRUDs simples, prototipos | Baja |
Two-Way | Formularios editables, integración con ORMs | Media-Alta |
One-Way | Dominios moderados, buen equilibrio | Media |
💡 Recomendación: Elegir según complejidad del proyecto y necesidades de desacoplamiento