MÓDULO 4 - Bases de Datos en Producción
Objetivos del Módulo
Este módulo le permitirá:
- Instalar y configurar PostgreSQL
- Comprender la diferencia entre Jakarta y Javax Persistence
- Dominar Hibernate y las estrategias DDL
- Utilizar Lombok para reducir el código repetitivo
- Migrar una aplicación de H2 a PostgreSQL
- Gestionar múltiples bases de datos (MySQL, SQL Server, Oracle)
Contenido del Módulo
Teoría
Este módulo está dividido en 4 capítulos teóricos que debe leer antes de pasar al laboratorio:
Capítulo 1: PostgreSQL - Instalación y Configuración
- ¿Qué es PostgreSQL?
- Instalación en Windows/Mac/Linux
- Herramientas de administración (pgAdmin, DBeaver)
- Creación de bases de datos y usuarios
- Configuración de Spring Boot para PostgreSQL
- Conexión y prueba
- Seguridad y mejores prácticas
Capítulo 2: Jakarta vs Javax Persistence
- Historia: Java EE → Jakarta EE
- Diferencias entre
javax.persistenceyjakarta.persistence - Migración: ¿cuándo y cómo?
- Compatibilidad con Spring Boot 2.x vs 3.x
- Resolución de problemas comunes
- Elección de la versión adecuada
Capítulo 3: Hibernate y Estrategias DDL
- ¿Qué es Hibernate?
- Rol de Hibernate en Spring Boot
- Estrategias
ddl-autoen detalle:none: Ninguna acciónvalidate: Solo validaciónupdate: Actualización incrementalcreate: Recreación en cada iniciocreate-drop: Creación y eliminación
- ¿Cuándo usar cada estrategia?
- Configuración del dialecto Hibernate
- Logs SQL y depuración
- Rendimiento y optimización
Capítulo 4: Lombok - Reducir el Código Boilerplate
- ¿Qué es Lombok?
- Instalación y configuración
- Anotaciones principales:
@Data@Getter/@Setter@NoArgsConstructor/@AllArgsConstructor@RequiredArgsConstructor@Builder@ToString@EqualsAndHashCode
- Ventajas y desventajas
- Mejores prácticas
- Compatibilidad con JPA
Laboratorios Prácticos
TP4.1: Migración PostgreSQL y Producción
Objetivo: Migrar una aplicación H2 a PostgreSQL con Lombok
Contenido:
- Instalación y configuración de PostgreSQL
- Migración de H2 a PostgreSQL
- Uso de Jakarta Persistence
- Aplicación de Lombok a todas las entidades
- Configuración de estrategias DDL
- Pruebas y validación
- Migración a otras bases de datos (MySQL, SQL Server, Oracle)
Duración estimada: 4-6 horas
Prerrequisitos:
- Módulo 2 completado (TP2.1 y TP2.2)
- Módulo 3 completado (TP3.1 - Arquitectura CRUD)
- Todos los capítulos del Módulo 4 leídos
Nivel: Intermedio a Avanzado
Prerrequisitos
Conocimientos Requeridos
Antes de comenzar este módulo, debe dominar:
✅ Módulo 2 (completo):
- Spring Initializr
- Estructura de proyecto
- Configuración
- Anotaciones básicas
- Repositorios y JPA básico
- H2 en memoria y persistente
✅ Módulo 3 (completo):
- Arquitectura de 3 capas
- Validación de datos
- Gestión de errores HTTP
- CRUD completo
Si no se siente cómodo con estos conceptos, regrese a los módulos anteriores.
Software Requerido
-
PostgreSQL 14+
- A instalar durante el módulo
- Descarga: postgresql.org
-
pgAdmin o DBeaver
- Herramienta de administración de bases de datos
- Descarga: pgadmin.org o dbeaver.io
-
JDK 17+, Maven 3.9+, VS Code
- Ya instalados desde el Módulo 2
Duración Estimada
Teoría: 8-10 horas (4 capítulos)
Práctica: 4-6 horas (1 laboratorio completo con migración)
Total: 12-16 horas (2-3 sesiones de 4-6 horas)
Recursos Adicionales
Documentación Oficial
- Documentación de PostgreSQL
- Documentación de Hibernate
- Documentación de Lombok
- Especificación de Jakarta Persistence
Tutoriales Recomendados
Criterios de Éxito
Al final de este módulo, usted debería ser capaz de:
- ✅ Instalar y configurar PostgreSQL
- ✅ Crear y gestionar bases de datos PostgreSQL
- ✅ Comprender las diferencias entre Jakarta y Javax Persistence
- ✅ Elegir y configurar la estrategia DDL de Hibernate adecuada
- ✅ Utilizar Lombok para reducir el código repetitivo
- ✅ Migrar una aplicación de H2 a PostgreSQL
- ✅ Configurar una aplicación para varios tipos de bases de datos
- ✅ Depurar problemas de conexión y configuración
Próximos Pasos
Una vez completado este módulo, estará listo para:
- Módulo 5: Spring Core - IoC y DI avanzado
- Módulo 6: Spring Data JPA Avanzado (Uniones, JPQL, Optimización)
- Módulo 7: Seguridad con Spring Security
Por Qué Este Módulo Es Importante
Desarrollo vs Producción
| Aspecto | H2 (Desarrollo) | PostgreSQL (Producción) |
|---|---|---|
| Tipo | En memoria o archivo local | Servidor dedicado |
| Rendimiento | Limitado | Alto rendimiento |
| Usuarios concurrentes | No adecuado | Excelente |
| Herramientas | Consola básica | pgAdmin, DBeaver |
| Escalabilidad | Baja | Excelente |
| Uso | Desarrollo/Pruebas | Producción |
Antes del Módulo 4
❌ Solo desarrollo (H2)
❌ Código verboso (muchos getters/setters)
❌ Configuración manual compleja
❌ No listo para producción
Después del Módulo 4
✅ Listo para producción (PostgreSQL)
✅ Código conciso (Lombok)
✅ Configuración profesional
✅ Listo para despliegue
✅ Competencias demandadas en la industria
Nota Pedagógica
¿Por qué este módulo viene DESPUÉS del Módulo 3?
- El Módulo 3 le enseñó la arquitectura robusta (Capa de Servicio, Validación, Gestión de errores)
- Esta arquitectura funciona con cualquier base de datos
- Ahora que domina la arquitectura, puede enfocarse en la base de datos
- PostgreSQL es más exigente que H2: se necesita una buena base antes de usarlo
Progresión lógica:
Módulo 2: Bases (H2 simple)
↓
Módulo 3: Arquitectura robusta (siempre H2)
↓
Módulo 4: Producción (PostgreSQL) ← USTED ESTÁ AQUÍ
↓
Módulo 6: Optimización (Consultas avanzadas)