Artículo

Patron DTO en Java: Que es y Como Usarlo

Que es un DTO en Java: patron de diseno Data Transfer Object con ejemplos en Spring Boot. Aprende cuando usarlo y como implementarlo.

Patron DTO en Java: Que es y Como Usarlo

Ultima actualizacion: 14 de julio de 2026

Contenido Rapido

  • DTO (Data Transfer Object) transfiere datos entre capas sin logica de negocio
  • Un DTO es un tipo especifico de POJO
  • Se usa en APIs REST para no exponer entidades de BD directamente
  • Un DTO tiene atributos privados, getters y setters
  • Spring Boot usa DTOs para separar capas de la arquitectura

DTO (Data Transfer Object) es un patron de diseno en Java que se usa para transferir datos entre capas de una aplicacion. Un DTO encapsula los datos que se envian a traves de la red o entre componentes, sin incluir logica de negocio.

El patrón de diseño DTO (Data Transfer Object) nos ayuda a separar las capas de nuestra aplicación de JAVA y además simplificar los datos que vamos a utilizar o enviar en nuestros métodos, cómo por ejemplo, no teniendo que hacer multiples llamadas a diferentes métodos para obtener varios datos.

Vídeo de explicación

¿Qué es un DTO?

Un DTO (Data Transfer Object) o objeto de transferencia de datos es simplemente un POJO, es decir es una clase plana sin ningún tipo de lógica de negocio en su interior, sólo es usado para guardar datos dentro de él. Ejemplo:

public class UsuarioDTO implements Serializable {
    private final String nombre;
    private final String apellidos;
    // constructor y otros métodos
}

Por norma general los DTO son clases con atributos con la palabra clave final, es decir son clases inmutables. Aunque esto suele ser discutido en diferentes foros, un DTO no debería de ser capaz de cambiar los datos que almacena ya que sirve para transmitir datos específicos en nuestro proyecto y si los cambiamos de forma errónea podríamos alterar el comportamiento de nuestra aplicación.

Además suelen implementar la interfaz Serializable ya que pueden ser utilizados para convertiros en bytes y enviar o obtener la información de alguna fuente.

¿Cómo usar un DTO?

A diferencia de las clases de modelo de dominio o las entidades, los DTO no tienen por qué enfocarse sólo y exclusivamente a una tipo de dato sino que podemos componer nuestro DTO con diferentes fuentes de datos y agruparlas desde diferentes llamadas para así usarlo cómo mejor veamos en nuestro proyecto. En el siguiente ejemplo tendremos un DTO que obtendrá datos de diferentes entidades, usuario y dirección y las agrupará ambas.

public class UsuarioDTO implements Serializable {
    private final String nombre;
    private final String apellidos;
    private final String calle;
    // constructor y otros métodos
}

Para crear una UsuarioDTO tendremos que almacenar datos tanto del usuario como su dirección de residencial, para ello vamos a utilizar dos llamadas a nuestra base de datos de las tablas USUARIOS y DIRECCIONES gracias a JPARepository de Spring Data

public UsuarioDTO encontrarUsuario(final long idUsuario, final long idDireccion) {
        final UsuarioEntidad usuarioEncontrado = usuarioRepositorio.findById(idUsuario)
                .orElseThrow(() -> new EntityNotFoundException("Usuario con id " + idUsuario + " no encontrado"));
        final DireccionEntidad direccionEncontrada = direccionRepositorio.findById(idDireccion)
                .orElseThrow(() -> new EntityNotFoundException("Direccion con id " + idDireccion + " no encontrada"));

        return new UsuarioDTO(usuarioEncontrado.getNombre(), usuarioEncontrado.getApellidos(), direccionEncontrada.getCalle());
}

Como vemos, hemos hecho dos consultas a la base de datos pero al final tenemos un DTO con los datos del usuario que necesitamos llamando a un método únicamente.

Preguntas Frecuentes

Que es un DTO en Java?

DTO (Data Transfer Object) es un patron de diseno que se utiliza para transferir datos entre capas de una aplicacion. Es un objeto simple que contiene propiedades, getters y setters, sin logica de negocio. Se usa para encapsular datos y enviarlos de un servicio a otro.

Que es un POJO en Java?

POJO (Plain Old Java Object) es una clase Java simple que no depende de ningun framework o interfaz especial. Es un objeto basico con atributos, constructores, getters y setters. Los DTOs suelen ser un tipo especifico de POJO.

Cual es la diferencia entre DTO y POJO?

Un POJO es un termino general para cualquier clase Java simple, mientras que un DTO es un POJO con un proposito especifico: transferir datos entre capas. Todo DTO es un POJO, pero no todo POJO es necesariamente un DTO.

Cuando usar DTOs en Java?

Usa DTOs cuando necesites transferir datos entre capas (por ejemplo, del repositorio al servicio, o del servicio al controller). Son especialmente utiles en APIs REST para evitar exponer entidades de base de datos directamente al cliente.

Como crear un DTO en Spring Boot?

Un DTO en Spring Boot es una clase Java simple con atributos privados, constructor vacio, constructor con parametros, getters y setters. Se puede usar Lombok para reducir codigo boilerplate con @Data o @Getter y @Setter.

Articulos Relacionados

¿Quieres acelerar tu carrera como desarrollador Java?

Reserva una Sesión de Estrategia Técnica gratuita y descubre cómo pasar de Junior a Senior en menos tiempo del que imaginas.

  • Diagnóstico personalizado de tu nivel técnico
  • Plan de acción para conseguir tu próximo ascenso
  • Mentoría 1-a-1 enfocada en resultados

Plazas disponibles limitadas

Compartir artículo