Los DTO son las clases entidad, estas se pasean por todas las capas cuando se aplica un patrón de diseño de Software como el MVC, MVP o MVVM, se asemejan a las clases en la POO, pero no poseen lógica del negocio.
Características
Teniendo como insumo una tabla de una base de datos como:Podemos establecer que sus características son:
- La estructura es idéntica a la de una clase del paradigma de la programación orientada a objetos (POO)
- Debe cumplir con el encapsulamiento (sus atributos deben tener acceso private) y herencia.
- Solo debe tener como métodos el constructor (sin parámetros) y los Setter/Getter
- Como método de buena práctica los atributos deben tener el mismo nombre que los campos de la tabla.
Ejemplo en Java
package dto;
import java.time.LocalDate;
public class Inquilinos {
private Integer idinquilinos;
private String dni;
private String nombres;
private String paterno;
private String materno;
private String telefono;
private String correo;
private Double deuda;
private LocalDate fecha_ingreso;
public Inquilinos() {
}
public Integer getIdinquilinos() {
return idinquilinos;
}
public void setIdinquilinos(Integer idinquilinos) {
this.idinquilinos = idinquilinos;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
public String getNombres() {
return nombres;
}
public void setNombres(String nombres) {
this.nombres = nombres;
}
public String getPaterno() {
return paterno;
}
public void setPaterno(String paterno) {
this.paterno = paterno;
}
public String getMaterno() {
return materno;
}
public void setMaterno(String materno) {
this.materno = materno;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
public Double getDeuda() {
return deuda;
}
public void setDeuda(Double deuda) {
this.deuda = deuda;
}
public LocalDate getFecha_ingreso() {
return fecha_ingreso;
}
public void setFecha_ingreso(LocalDate fecha_ingreso) {
this.fecha_ingreso = fecha_ingreso;
}
}
Beneficios
Reducción del número de llamadas remotas: mediante una sola llamada donde trae todos los datos contenidos en un solo objeto se logra reducir la cantidad de estas y aumentar la velocidad de respuesta.Protección del funcionamiento interno del programa: al pasar los datos encapsulados se provee una mayor seguridad ante ingeniería inversa.
Obtener objetos de negocio: en ocasiones podemos encontrar que un DTO es común a muchos negocios o áreas y puede ser considerado un objeto de negocio sirviendo como plantilla para futuras implementaciones a los programadores, desarrolladores, analistas, etc.
Facilidad de pruebas. Si se aplican lenguajes de intercambio como XML o Json, mediante un DTO se puede realizar pruebas con mayor facilidad pára comprobar la integridad de los datos o el funcionamiento de la aplicación.