MÓDULO 3 - Arquitetura em Camadas e CRUD Completo
Objetivos do Módulo
Este módulo permitirá que você:
- Domine a arquitetura em 3 camadas (Controller, Service, Repository)
- Compreenda o papel e a importância da camada Service
- Implemente a validação de dados com Bean Validation
- Gerencie erros HTTP de forma profissional com ResponseEntity
- Crie uma API REST completa e robusta
Conteúdo do Módulo
Teoria
Capítulo 1: A Camada Service em Detalhe
- Papel e responsabilidades da camada Service
- Separação de responsabilidades
- Lógica de negócio vs acesso a dados
- Injeção de dependências
- Arquitetura completa Controller → Service → Repository
Capítulo 2: Validação de Dados
- Introdução ao Bean Validation (JSR 380)
- Anotações de validação:
@NotNull,@NotEmpty,@NotBlank@Size,@Min,@Max@Email,@Pattern@Past,@Future
@Validnos controllers- Mensagens de erro personalizadas
- Grupos de validação
- Validação personalizada
Capítulo 3: Tratamento de Erros HTTP
- Entendendo ResponseEntity
- Códigos de status HTTP (200, 201, 204, 400, 404, 500)
- Tratamento de exceções
@ExceptionHandler@ControllerAdvicepara tratamento global- Criação de respostas de erro personalizadas
- Melhores práticas
Capítulo 4: Arquitetura 3 Camadas Profissional
- Visão geral da arquitetura
- Fluxo completo de dados
- Convenções de nomenclatura
- Organização de pacotes
- DTOs vs Entidades (introdução)
- Melhores práticas profissionais
Prática
TP3.1: Arquitetura CRUD Completa
Objetivo: Criar uma API REST completa com validação e tratamento de erros
Conteúdo:
- Arquitetura em 3 camadas (Controller, Service, Repository)
- Entidade Product com validação
- Operações CRUD completas
- Validação dos dados de entrada
- Tratamento profissional de erros (404, 400, 500)
- ResponseEntity para todas as respostas
- Testes com Postman
Duração estimada: 4-6 horas
Pré-requisitos:
- Módulo 2 concluído (TP2.1 e TP2.2)
- Todos os capítulos do Módulo 3 lidos
Nível: Intermediário
TP3.2: CRUD Autônomo (Desafio)
Objetivo: Mesmo enunciado do TP3.1 mas sem nenhum código fornecido — para realizar sozinho
Conteúdo:
- Mesma aplicação de gestão de estudantes
- Instruções claras: o que fazer, quais endpoints, quais códigos HTTP
- Nenhum detalhe técnico, nenhum código fornecido
- 5 exercícios bônus (busca, estatísticas, paginação, erros, PostgreSQL)
- Perguntas de revisão e critérios de avaliação
Duração estimada: 2-3 horas
Pré-requisitos: Ter compreendido os conceitos do Módulo 3
Nível: Intermediário-Avançado (autonomia necessária)
Pré-requisitos
Conhecimentos Necessários
Antes de começar este módulo, você deve dominar:
✅ Criação de projetos Spring Boot com Spring Initializr
✅ Estrutura de um projeto Spring Boot
✅ Configuração (application.properties / application.yml)
✅ Anotações básicas (@RestController, @Service, @Repository)
✅ Anotações de mapeamento HTTP (@GetMapping, @PostMapping, etc.)
✅ JPA e repositories (findById, findAll, save, deleteById)
✅ Métodos derivados simples (findBy, And, Or)
✅ H2 em modo memória e persistente
Se você não estiver confortável com esses conceitos, volte ao Módulo 2.
Duração Estimada
Teoria: 8-10 horas (4 capítulos)
Prática: 4-6 horas (1 TP completo)
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:
- ✅ Criar uma arquitetura em 3 camadas profissional
- ✅ Implementar validação de dados com Bean Validation
- ✅ Tratar erros HTTP com ResponseEntity
- ✅ Utilizar os códigos de status HTTP corretos
- ✅ Implementar todas as operações CRUD
- ✅ Separar corretamente a lógica de negócio do acesso a dados
- ✅ Criar uma API REST robusta e profissional
Próximos Passos
Após concluir este módulo, você estará pronto para:
- Módulo 4: Bancos de Dados em Produção (PostgreSQL, Jakarta/Javax, Hibernate, Lombok)
- Módulo 5: Spring Core - IoC e DI avançado
- Módulo 6: Spring Data JPA Avançado (Joins, JPQL, Otimização)
Por Que Este Módulo É Importante
Antes do Módulo 3
❌ Código frágil (sem validação)
❌ Tratamento de erros básico
❌ Lógica de negócio no controller
❌ Difícil de testar
❌ Não profissional
Depois do Módulo 3
✅ Código robusto (validação completa)
✅ Tratamento de erros profissional
✅ Separação clara de responsabilidades
✅ Facilmente testável
✅ Pronto para produção