O que é DTO (Data Transfer Object)?
O que é DTO (Data Transfer Object)?
DTO (Data Transfer Object) é um padrão de projeto usado para transportar dados entre diferentes camadas de uma aplicação. Ele é comumente utilizado em aplicações que seguem a arquitetura cliente-servidor, como no desenvolvimento de APIs.
Origem do DTO
O padrão DTO surgiu no contexto da programção orientada a objetos e foi popularizado pelo livro "Patterns of Enterprise Application Architecture" de Martin Fowler. Ele foi criado para reduzir o número de chamadas remotas em sistemas distribuídos, agrupando dados em um único objeto para facilitar sua transmissão.
Contexto de uso
DTOs são usados principalmente para transferir dados entre o backend e o frontend sem expor diretamente as entidades do banco de dados. Isso melhora a segurança, a manutenção do código e a organização dos dados.
Exemplo de criação de um DTO em Java com Spring Boot
public class UsuarioDTO {
private String nome;
private String email;
public UsuarioDTO(String nome, String email) {
this.nome = nome;
this.email = email;
}
public String getNome() {
return nome;
}
public String getEmail() {
return email;
}
}
O DTO acima encapsula apenas os dados necessários para transferência, ao invés de expor toda a entidade Usuario
.
Serialização e Desserialização
Serialização é o processo de converter um objeto Java em um formato que possa ser armazenado ou transmitido, como JSON ou XML. Desserialização é o processo inverso, onde os dados em JSON ou XML são convertidos de volta em um objeto Java.
No contexto do DTO, a serialização permite que o objeto UsuarioDTO
seja transformado em JSON para ser enviado ao frontend. No frontend, esse JSON pode ser desserializado de volta para um objeto manipulável pela aplicação.
Exemplo de transformação de UsuarioDTO
para JSON:
{
"nome": "Maria Silva",
"email": "maria@email.com"
}
O Spring Boot usa bibliotecas como Jackson para fazer essa conversão automaticamente.
Formato de transmissão de dados: JSON e outros formatos
O formato mais comum para transferência de dados usando DTOs é JSON (JavaScript Object Notation). O JSON é um formato leve de troca de dados baseado em texto, fácil de ler e escrever.
O que é JSON?
JSON é um formato de dados que representa objetos como pares chave-valor:
{
"nome": "Maria Silva",
"email": "maria@email.com"
}
Além do JSON, outros formatos também podem ser usados para transferir dados, como XML e Protobuf, mas JSON se destaca por sua simplicidade e suporte nativo em diversas linguagens.
Relação do DTO com Backend e Frontend
No backend, DTOs são usados para estruturar os dados antes de enviá-los para o frontend. No frontend, o DTO é convertido em objetos para exibição e manipulação na interface do usuário.
Exemplo de uso de DTO no Spring Boot e Angular
- Backend (Spring Boot)
@RestController
@RequestMapping("/usuarios")
public class UsuarioController {
@GetMapping
public UsuarioDTO getUsuario() {
return new UsuarioDTO("João Silva", "joao@email.com");
}
}
- Frontend (Angular - consumo da API)
export interface UsuarioDTO {
nome: string;
email: string;
}
fetch('http://localhost:8080/usuarios')
.then(response => response.json())
.then((data: UsuarioDTO) => console.log(data));
Nesse exemplo, o Angular faz uma requisição para a API do Spring Boot, que retorna um objeto JSON baseado no DTO UsuarioDTO
. A serialização ocorre no backend ao converter o objeto Java para JSON, e a desserialização ocorre no frontend ao transformar o JSON em um objeto TypeScript.
Conclusão
O uso de DTOs é essencial para otimizar a comunicação entre backend e frontend, garantindo segurança, eficiência e clareza na estrutura dos dados. Quando integrado a tecnologias como Spring Boot e Angular, ele facilita o desenvolvimento de aplicações escaláveis e bem estruturadas.