MÓDULO 3 - Arquitectura en Capas y CRUD Completo
Objetivos del Módulo
Este módulo le permitirá:
- Dominar la arquitectura de 3 capas (Controller, Service, Repository)
- Comprender el rol y la importancia de la capa Service
- Implementar la validación de datos con Bean Validation
- Gestionar los errores HTTP profesionalmente con ResponseEntity
- Crear una API REST completa y robusta
Contenido del Módulo
Teoría
Capítulo 1: La Capa Service en Detalle
- Rol y responsabilidades de la capa Service
- Separación de preocupaciones
- Lógica de negocio vs acceso a datos
- Inyección de dependencias
- Arquitectura completa Controller → Service → Repository
Capítulo 2: Validación de Datos
- Introducción a Bean Validation (JSR 380)
- Anotaciones de validación:
@NotNull,@NotEmpty,@NotBlank@Size,@Min,@Max@Email,@Pattern@Past,@Future
@Validen los controladores- Mensajes de error personalizados
- Grupos de validación
- Validación personalizada
Capítulo 3: Gestión de Errores HTTP
- Comprender ResponseEntity
- Códigos de estado HTTP (200, 201, 204, 400, 404, 500)
- Gestión de excepciones
@ExceptionHandler@ControllerAdvicepara gestión global- Creación de respuestas de error personalizadas
- Mejores prácticas
Capítulo 4: Arquitectura 3 Capas Profesional
- Visión general de la arquitectura
- Flujo de datos completo
- Convenciones de nomenclatura
- Organización de paquetes
- DTOs vs Entidades (introducción)
- Mejores prácticas profesionales
Prácticas
TP3.1: Arquitectura CRUD Completa
Objetivo: Crear una API REST completa con validación y gestión de errores
Contenido:
- Arquitectura de 3 capas (Controller, Service, Repository)
- Entidad Product con validación
- Operaciones CRUD completas
- Validación de los datos de entrada
- Gestión profesional de errores (404, 400, 500)
- ResponseEntity para todas las respuestas
- Pruebas con Postman
Duración estimada: 4-6 horas
Prerrequisitos:
- Módulo 2 completado (TP2.1 y TP2.2)
- Todos los capítulos del Módulo 3 leídos
Nivel: Intermedio
TP3.2: CRUD Autónomo (Desafío)
Objetivo: Mismo enunciado que TP3.1 pero sin ningún código proporcionado — a realizar de forma independiente
Contenido:
- Misma aplicación de gestión de estudiantes
- Instrucciones claras: qué hacer, qué endpoints, qué códigos HTTP
- Ningún detalle técnico, ningún código proporcionado
- 5 ejercicios extra (búsqueda, estadísticas, paginación, errores, PostgreSQL)
- Preguntas de repaso y criterios de evaluación
Duración estimada: 2-3 horas
Prerrequisitos: Haber comprendido los conceptos del Módulo 3
Nivel: Intermedio-Avanzado (se requiere autonomía)
Prerrequisitos
Conocimientos Requeridos
Antes de comenzar este módulo, debe dominar:
✅ Creación de proyectos Spring Boot con Spring Initializr
✅ Estructura de un proyecto Spring Boot
✅ Configuración (application.properties / application.yml)
✅ Anotaciones básicas (@RestController, @Service, @Repository)
✅ Anotaciones de mapeo HTTP (@GetMapping, @PostMapping, etc.)
✅ JPA y repositories (findById, findAll, save, deleteById)
✅ Métodos derivados simples (findBy, And, Or)
✅ H2 en modo memoria y persistente
Si no se siente cómodo con estos conceptos, regrese al Módulo 2.
Duración Estimada
Teoría: 8-10 horas (4 capítulos)
Práctica: 4-6 horas (1 TP completo)
Total: 12-16 horas (2-3 sesiones de 4-6 horas)
Recursos Adicionales
Documentación Oficial
Tutoriales Recomendados
Criterios de Éxito
Al finalizar este módulo, usted debería ser capaz de:
- ✅ Crear una arquitectura de 3 capas profesional
- ✅ Implementar la validación de datos con Bean Validation
- ✅ Gestionar los errores HTTP con ResponseEntity
- ✅ Utilizar los códigos de estado HTTP correctos
- ✅ Implementar todas las operaciones CRUD
- ✅ Separar correctamente la lógica de negocio del acceso a datos
- ✅ Crear una API REST robusta y profesional
Próximos Pasos
Una vez completado este módulo, estará listo para:
- Módulo 4: Bases de Datos en Producción (PostgreSQL, Jakarta/Javax, Hibernate, Lombok)
- Módulo 5: Spring Core - IoC y DI avanzado
- Módulo 6: Spring Data JPA Avanzado (Joins, JPQL, Optimización)
Por Qué Este Módulo Es Importante
Antes del Módulo 3
❌ Código frágil (sin validación)
❌ Gestión de errores básica
❌ Lógica de negocio en el controlador
❌ Difícil de probar
❌ No profesional
Después del Módulo 3
✅ Código robusto (validación completa)
✅ Gestión de errores profesional
✅ Separación clara de responsabilidades
✅ Fácilmente testeable
✅ Listo para producción