Data Transfer Object (DTO)
Overview
Data Transfer Object (DTO)

Data Transfer Object (DTO)

August 31, 2025
2 min read
v1

Aspectos claves a ver con este post:

  1. Enfoque arquitectónico
  2. Problemas actuales y reales
    1. Exposicion de info sensible
  3. Porque usar DTOs Que es un DTO?

Un DTO (Data Transfer Object) es el responsable de transportar los datos en capas a sus respectivos servicios (donde se maneja la lógica de negocio)

son estructuras de datos serializables, sin lógica, ideales para el borde del sistema (entrada y salida).

Aspectos clave:

  • Separamos el modelo interno o entidades de bases de datos con sus respectivos llave-valores para especificar que queremos que nos llegue del API
  • No se expone el modelo de dominio
  • Encapsulacion y seguridad

Como los conocí?

En el trabajo me di cuenta que usaban DTOs la verdad no tenía idea para que eran hasta cuando me lo explicaroon y me pareció super interesante.

DTOs vs Modelo de dominio

PurposeDtoDomain model
Has logicNoYes
TransportYesNo
Client exposedYesNo

Request and Response

Request: Ya que Por ejemplo yo hago bastante validaciones en una api endpoint entonces yo no quiero que todo el modelo completo se me permita enviar directamente eh como tipo llave valor cuando trabajo con jason eh en el API yo por ejemplo utilizo el dedo para especificar qué llaves quiero que me lleguen al servicio Que estoy utilizando que ya se conecta con el modelo en sí entonces que utilizo más que todo el leteo para especificar al API en point que ya ves son las que quiero que me lleguen eh ya sea en el Boy harder o o para arm

Response: devolver los datos necesarios y bien estructados en la respuesta del API endpoint al cliente

Not use DTos

  1. Basic/simple systems. It may be overengineering

public class UserDto {
private String email;
private String name;
}

My first experience with DTOs

Dev

Ejemplo DTO en Java

@Entity
public class User {
@Id
private Long id;
private String username;
private String email;
private String password; // Should not be exposed in APIs
private String address;
// Getters and setters
}
public class UserDTO {
private String username;
private String email;
// Getters and setters
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<UserDTO> getAllUsers() {
List<User> users = userRepository.findAll();
return users.stream()
.map(user -> {
UserDTO dto = new UserDTO();
dto.setUsername(user.getUsername());
dto.setEmail(user.getEmail());
return dto;
})
.collect(Collectors.toList());
}
}

Tener en cuenta las entities mappers vs dtos vs el mongo password: 0

Referencias:

  1. Dto vs Projections vs Mappers
  2. Data Transfer Object DTO Definition and Usage | Okta

Sentheon.com

Sentheon is a TI consulting firm specializing in cloud solutions and DevOps practices.

  • info@sentheon.com

© 2025 Sentheon. All rights reserved.