15 de agosto de 2026 • Java

00 - Tipos de Arquiteturas em Camadas

Arquitetura em Camadas

Client


Controller


Service


Repository


Database

Responsabilidades

  • Controller → Recebe requisições HTTP e retorna respostas HTTP.
  • Service → Contém a lógica de negócio da aplicação.
  • Repository → Lida com a comunicação com o banco de dados.
  • Entity → Representa uma tabela de banco de dados (JPA).
  • DTO (Data Transfer Object) → Objeto usado para requisições e respostas de API.
  • Config → Classes de configuração do Spring.
  • Utility → Funções auxiliares reutilizáveis.

Arquitetura Baseada em Funcionalidades (Package by Feature)

user/
 ├── UserController
 ├── UserService
 ├── UserRepository
 ├── UserDTO
 └── User

product/
 ├── ProductController
 ├── ProductService
 ├── ProductRepository
 ├── ProductDTO
 └── Product

Cada funcionalidade contém todas as classes relacionadas a uma capacidade de negócio específica.


Arquitetura Hexagonal (Ports & Adapters)

Comumente utilizada em grandes aplicações corporativas, fintechs e bancos.

Controller


Application Service


Domain


Repository Interface


JPA Repository

A camada de domínio não depende de Spring, HTTP ou do banco de dados.

Vantagens

  • Fácil de testar
  • Pouco acoplada
  • Fácil de substituir o banco de dados
  • Fácil de substituir REST por Kafka, GraphQL ou gRPC

Arquitetura Limpa

Uma evolução da Arquitetura Hexagonal.

Controller


Use Cases


Domain


Infrastructure
← Voltar para o blog