Pregunta

¿Un objeto de transferencia de datos es igual que un objeto de valor o son diferentes?Si son diferentes, ¿dónde deberíamos usar un DTO y dónde deberíamos usar un VO?

El lenguaje de programación del que estamos hablando es Java y el contexto es: hay una aplicación web, que obtiene datos de una base de datos y luego los procesa y, finalmente, la información procesada se muestra en el front-end

¿Fue útil?

Solución

Un objeto de valor es un objeto simple cuya igualdad no se basa en la identidad. Un objeto de transferencia de datos es un objeto que se utiliza para transferir datos entre subsistemas de aplicaciones de software, generalmente entre capas empresariales y la interfaz de usuario.Se centra solo en datos simples, por lo que no tiene ningún comportamiento.

Otros consejos

use un DTO en el límite de sus servicios si no desea enviar el objeto de dominio real a los clientes del servicio; esto ayuda a reducir las dependencias entre el cliente y el servicio.

Los objetos de valores son simplemente objetos cuya igualdad no se basa en la identidad, p. ej.java.lang.Integer

Los DTO y los objetos de valor no son realmente alternativas entre sí.

Un objeto de transferencia de datos es un truco para mover un montón de datos de una capa o nivel a otro, el objetivo es minimizar la cantidad de llamadas de ida y vuelta al empaquetar un montón de cosas en la misma estructura de datos y enviarlas juntos. Algunas personas también lo usan, como Michael señala en su publicación aquí , para que las clases utilizadas por una capa no estén expuestas. a la capa que lo llama. Cuando me refiero a DTO como una tontería, quiero decir que no se está implementando un concepto abstracto preciso, es una solución práctica para ayudar con la comunicación entre las capas de la aplicación.

Un objeto de valor es algo en lo que solo nos interesa su valor, como un monto monetario , un intervalo de fechas o un código de tabla de búsqueda . No tiene identidad, lo que significa que no te preocuparía, si tuvieras varias, de saber cuál es cuál, porque no son cosas en sí mismas.

Compare los Objetos de valor con las cosas que tienen una identidad única en su sistema, que se denominan Entidades. Si tiene un sistema donde rastrea a un cliente que realiza un pago, el cliente y el pago son entidades, porque representan cosas específicas, pero el monto monetario del pago es solo un valor, no tiene existencia por sí mismo, en lo que respecta a su sistema. La forma en que algo se relaciona con su sistema determina si es un objeto de valor o una entidad.

Son diferentes, pero incluso he usado los dos indistintamente en el pasado, lo cual es incorrecto.Leí que DTO (Objeto de transferencia de datos) se llamó VO (Objeto de valor) en la primera edición del libro Core J2EE Patterns, pero no pude encontrar esa referencia.

Un DTO, que a veces he llamado Objeto de transferencia tonto para ayudarme a recordar que es un contenedor y no debería tener ninguna lógica comercial, se usa para transportar datos entre capas y niveles.Solo debería ser un objeto con atributos que tenga getters / setters.

Sin embargo, un VO es similar a un JAVA Enum y representa un conjunto fijo de datos.Un VO no tiene identidad de objeto (la dirección de la instancia del objeto en la memoria), se identifica por su valor y es inmutable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top