MÓDULO 4 - Bancos de Dados em Produção
Objetivos do Módulo
Este módulo permitirá que você:
- Instale e configure o PostgreSQL
- Compreenda a diferença entre Jakarta e Javax Persistence
- Domine o Hibernate e as estratégias DDL
- Utilize o Lombok para reduzir o código boilerplate
- Migre uma aplicação de H2 para PostgreSQL
- Gerencie múltiplos bancos de dados (MySQL, SQL Server, Oracle)
Conteúdo do Módulo
Teoria
Este módulo está dividido em 4 capítulos teóricos que você deve ler antes de passar para o exercício prático:
Capítulo 1: PostgreSQL - Instalação e Configuração
- O que é PostgreSQL?
- Instalação no Windows/Mac/Linux
- Ferramentas de administração (pgAdmin, DBeaver)
- Criação de bancos de dados e usuários
- Configuração do Spring Boot para PostgreSQL
- Conexão e teste
- Segurança e melhores práticas
Capítulo 2: Jakarta vs Javax Persistence
- Histórico: Java EE → Jakarta EE
- Diferenças entre
javax.persistenceejakarta.persistence - Migração: quando e como?
- Compatibilidade com Spring Boot 2.x vs 3.x
- Resolução de problemas comuns
- Escolha da versão correta
Capítulo 3: Hibernate e Estratégias DDL
- O que é Hibernate?
- Papel do Hibernate no Spring Boot
- Estratégias
ddl-autoem detalhes:none: Nenhuma açãovalidate: Apenas validaçãoupdate: Atualização incrementalcreate: Recriação a cada inicializaçãocreate-drop: Criação e remoção
- Quando usar cada estratégia?
- Configuração do dialect do Hibernate
- Logs SQL e depuração
- Performance e otimização
Capítulo 4: Lombok - Reduzindo Código Boilerplate
- O que é Lombok?
- Instalação e configuração
- Principais anotações:
@Data@Getter/@Setter@NoArgsConstructor/@AllArgsConstructor@RequiredArgsConstructor@Builder@ToString@EqualsAndHashCode
- Vantagens e desvantagens
- Melhores práticas
- Compatibilidade com JPA
Exercícios Práticos
TP4.1: Migração PostgreSQL e Produção
Objetivo: Migrar uma aplicação H2 para PostgreSQL com Lombok
Conteúdo:
- Instalação e configuração do PostgreSQL
- Migração de H2 para PostgreSQL
- Utilização de Jakarta Persistence
- Aplicação do Lombok em todas as entidades
- Configuração das estratégias DDL
- Testes e validação
- Migração para outros bancos de dados (MySQL, SQL Server, Oracle)
Duração estimada: 4-6 horas
Pré-requisitos:
- Módulo 2 completo (TP2.1 e TP2.2)
- Módulo 3 completo (TP3.1 - Arquitetura CRUD)
- Todos os capítulos do Módulo 4 lidos
Nível: Intermediário a Avançado
Pré-requisitos
Conhecimentos Necessários
Antes de começar este módulo, você deve dominar:
✅ Módulo 2 (completo):
- Spring Initializr
- Estrutura do projeto
- Configuração
- Anotações básicas
- Repositórios e JPA básico
- H2 em memória e persistente
✅ Módulo 3 (completo):
- Arquitetura em 3 camadas
- Validação de dados
- Tratamento de erros HTTP
- CRUD completo
Se você não estiver confortável com esses conceitos, volte aos módulos anteriores.
Softwares Necessários
-
PostgreSQL 14+
- Para instalar durante o módulo
- Download: postgresql.org
-
pgAdmin ou DBeaver
- Ferramenta de administração de banco de dados
- Download: pgadmin.org ou dbeaver.io
-
JDK 17+, Maven 3.9+, VS Code
- Já instalados desde o Módulo 2
Duração Estimada
Teoria: 8-10 horas (4 capítulos)
Prática: 4-6 horas (1 exercício prático completo com migração)
Total: 12-16 horas (2-3 sessões de 4-6 horas)
Recursos Adicionais
Documentação Oficial
- Documentação do PostgreSQL
- Documentação do Hibernate
- Documentação do Lombok
- Especificação Jakarta Persistence
Tutoriais Recomendados
Critérios de Sucesso
Ao final deste módulo, você deverá ser capaz de:
- ✅ Instalar e configurar o PostgreSQL
- ✅ Criar e gerenciar bancos de dados PostgreSQL
- ✅ Compreender as diferenças entre Jakarta e Javax Persistence
- ✅ Escolher e configurar a estratégia DDL correta do Hibernate
- ✅ Utilizar o Lombok para reduzir código boilerplate
- ✅ Migrar uma aplicação de H2 para PostgreSQL
- ✅ Configurar uma aplicação para múltiplos tipos de bancos de dados
- ✅ Depurar problemas de conexão e configuração
Próximos Passos
Após concluir este módulo, você estará pronto para:
- Módulo 5: Spring Core - IoC e DI avançado
- Módulo 6: Spring Data JPA Avançado (Joins, JPQL, Otimização)
- Módulo 7: Segurança com Spring Security
Por Que Este Módulo É Importante
Desenvolvimento vs Produção
| Aspecto | H2 (Desenvolvimento) | PostgreSQL (Produção) |
|---|---|---|
| Tipo | Em memória ou arquivo local | Servidor dedicado |
| Performance | Limitada | Alta performance |
| Usuários concorrentes | Não adequado | Excelente |
| Ferramentas | Console básico | pgAdmin, DBeaver |
| Escalabilidade | Baixa | Excelente |
| Uso | Desenvolvimento/Testes | Produção |
Antes do Módulo 4
❌ Apenas desenvolvimento (H2)
❌ Código verboso (muitos getters/setters)
❌ Configuração manual complexa
❌ Não pronto para produção
Após o Módulo 4
✅ Pronto para produção (PostgreSQL)
✅ Código conciso (Lombok)
✅ Configuração profissional
✅ Pronto para deploy
✅ Competências valorizadas no mercado
Nota Pedagógica
Por que este módulo vem DEPOIS do Módulo 3?
- O Módulo 3 ensinou a arquitetura robusta (Service Layer, Validação, Tratamento de erros)
- Essa arquitetura funciona com qualquer banco de dados
- Agora que você domina a arquitetura, pode focar no banco de dados
- O PostgreSQL é mais exigente que o H2: é preciso uma boa base antes de usá-lo
Progressão lógica:
Módulo 2: Fundamentos (H2 simples)
↓
Módulo 3: Arquitetura robusta (ainda H2)
↓
Módulo 4: Produção (PostgreSQL) ← VOCÊ ESTÁ AQUI
↓
Módulo 6: Otimização (Consultas avançadas)