es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la mejor práctica para enviar datos al cliente: devolver una entidad o un DTO?

No estoy seguro de si debería enviar la entidad que tiene la tabla seleccionada y todas las tablas relacionadas, o un DTO que tenga la clave externa a las tablas relacionadas y solo llame a dichas tablas cuando sea necesario.

Ejemplo de entidad devuelta:

@Entity
public class Staff implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String role;
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn()
    private Gsm gsmDetails;
    @OneToMany(mappedBy = "staff", fetch = FetchType.LAZY)
    private List<coupon> coupons = new ArrayList<coupon>();
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn()
    private Voip voip;
    @OneToOne()
    private Card card;
    @OneToOne()
    private Phone phone;
    //resto de getters, setters y constructores
}

Ejemplo de DTO:

public class StaffDto {
    private Long id;
    private String name;
    private String role;
    private Long gsmId;
    private List<long> couponId;
    private long voipId;
    private long cardId;
    private long phoneId;
}

No sé cuál es el mejor enfoque para no causar tiempos de carga innecesariamente largos o inflar los datos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI, la decisión de enviar una entidad o un DTO depende en última instancia del caso de uso específico y los requisitos de la aplicación.

    Enviar la entidad con todas las tablas relacionadas puede ser adecuado para aplicaciones a pequeña escala donde los datos no son extensos y se requiere acceso inmediato a todos los datos en la entidad. Sin embargo, este enfoque puede llevar a largos tiempos de carga y posibles problemas de inflación de datos a medida que la aplicación crece.

    Por otro lado, enviar un DTO con claves foráneas a tablas relacionadas puede ser favorable cuando se trabaja con grandes cantidades de datos, ya que evita la recuperación innecesaria de datos, minimiza los tiempos de carga y reduce los problemas de inflación de datos.

    Por lo tanto, se recomienda evaluar el caso de uso específico, la cantidad de datos que se manejan y los requisitos de escalabilidad de la aplicación para determinar el enfoque más adecuado a adoptar.

Comments are closed.