Pular para o conteúdo principal

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.persistence e jakarta.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-auto em detalhes:
    • none: Nenhuma ação
    • validate: Apenas validação
    • update: Atualização incremental
    • create: Recriação a cada inicialização
    • create-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​

  1. PostgreSQL 14+

  2. pgAdmin ou DBeaver

  3. 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​

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​

AspectoH2 (Desenvolvimento)PostgreSQL (Produção)
TipoEm memória ou arquivo localServidor dedicado
PerformanceLimitadaAlta performance
Usuários concorrentesNão adequadoExcelente
FerramentasConsole básicopgAdmin, DBeaver
EscalabilidadeBaixaExcelente
UsoDesenvolvimento/TestesProduçã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?

  1. O Módulo 3 ensinou a arquitetura robusta (Service Layer, Validação, Tratamento de erros)
  2. Essa arquitetura funciona com qualquer banco de dados
  3. Agora que você domina a arquitetura, pode focar no banco de dados
  4. 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)

Capítulo 1 - PostgreSQL (teoria detalhada)