Pular para o conteúdo principal

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
  • @Valid nos 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
  • @ControllerAdvice para 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

Comece pelo Capítulo 1