Saltar al contenido principal

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
  • @Valid en 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
  • @ControllerAdvice para 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

Comenzar con el Capítulo 1