📊 Capítulo 08: Migrações com Flyway & Transações
Especialização Backend com Java 21 & Spring Boot 3
🗺️ O Fluxo de Versionamento de Banco e Transações ACID
flowchart TD
BOOT["Inicialização da Aplicação"]
--> FLYWAY["Flyway Engine\n(Verifica tabela flyway_schema_history)"]
--> SCRIPTS["Executa Scripts Pendentes (V1__criar_tabelas.sql, V2__indices.sql)"]
--> READY["Banco de Dados Sincronizado"]
--> TX["Execução de Serviços com @Transactional\n(Abertura de Transação -> Commit / Rollback)"]
style BOOT fill:#ede7f6,stroke:#512da8,stroke-width:2px
style FLYWAY fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style SCRIPTS fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style READY fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style TX fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
🎯 Slide 1: Versionamento Imutável de Banco com Flyway
- Convenção de Nomenclatura Estrita:
V1__criar_tabela_usuarios.sql(Migração versionada).V2__adicionar_coluna_cpf.sql.-
R__recarregar_views.sql(Migração repetível / Repeatable).
- Checksum de Segurança: O Flyway impede que scripts já executados sejam alterados, garantindo paridade total entre ambientes (Dev, Staging, Prod).
🎯 Slide 2: Gestão de Transações Declarativa com @Transactional
-
Como Funciona: O Spring cria um Proxy AOP dinâmico em torno do método do
@Service. -
Commit Automático: Ao terminar a execução do método com sucesso.
- Rollback Automático: Disparado por padrão apenas para
RuntimeExceptioneError(userollbackFor = Exception.classpara checked exceptions!).
🎯 Slide 3: Propagação & Otimizações de Transação
-
Propagação
REQUIRED(Default): Usa a transação existente ou cria uma nova se nenhuma existir. -
Propagação
REQUIRES_NEW: Suspende a transação atual e abre uma nova independente (útil para auditoria e logs). readOnly = true: Otimização para queries de consulta — desativa o dirty checking no Hibernate e redireciona para réplicas de leitura do banco!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim