patron example diseƱo and java architecture data-transfer-objects domain-object

java - example - jpa and dto



Diferencia entre objetos de transferencia y objetos de dominio (4)

Los objetos de transferencia a menudo son serializables debido a la naturaleza de su uso, esto es especialmente pertinente si las llamadas son remotas y entre JVM, o se usarán de una manera que promueva la serialización, como los beans de sesión con estado. Para este propósito, los objetos de transferencia deben ser susceptibles a dicho "tratamiento", es decir, los objetos de Transferencia implementan serializable.

Lo contrario no se puede decir de los objetos de dominio. Los objetos de dominio pueden contener comportamiento, sin embargo, los DTO son simplemente un medio de transporte.

¿Podría explicar la diferencia entre transferir objetos y objetos de dominio en términos simples? Y si pudieras dar un ejemplo de Java, sería genial ...


Objeto de dominio en perspectiva empresarial, es actor o sujeto de la actividad con todo el dominio y flujos, DTO es el objeto de datos que no es lo mismo que el bean de datos que refleja fielmente los objetos de la base de datos (especialmente en la arquitectura ORM) DTO puede tener agregación de datos , transformación, combinación para satisfacer la representación o algunas necesidades munipuladas de datos, no es un asunto, pero el objeto de dominio tiene una base de sujeto en su definición de nivel de dominio.


Un objeto de transferencia de datos (DTO) se utiliza para intercambiar datos entre diferentes partes de una aplicación (como diferentes capas) o diferentes aplicaciones.

  • Los DTO son simplemente una estructura de datos "tonta".
  • Se usan en los contratos / definiciones de interfaz, lo que significa que cualquier componente que use una de estas interfaces "sabe" sobre estos objetos.

Los objetos de dominio (DO) (y las clases a partir de las cuales se derivan) implementan la lógica de negocios, ya que solo se encuentran en la capa de lógica de negocios / dominio (el significado esencial es el mismo, incluso si los términos son diferentes).

Debido a que los DO implementan la lógica empresarial, pueden ser complejos y pueden incluir métodos, eventos, etc.

Un punto más sobre DTOs

De acuerdo con la escuela de pensamiento Martin Fowler, un DTO es una combinación de varios objetos (cada uno de los cuales sería lo que la mayoría de la gente llamaría un DTO); la razón es que en situaciones es menos costoso enviar paquetes de datos más grandes con menos frecuencia (en lugar de ser "hablador" y enviar muchos paquetes pequeños constantemente a través del cable).

Entonces, donde la mayoría de la gente vería un DTO como un solo objeto, Martin F está diciendo que un DTO es simplemente un "envoltorio" que contiene varios objetos discretos (y posiblemente no relacionados). En mi opinión, no es un gran problema, la mayoría de las personas opina que un DTO es según mi definición en la parte superior de esta respuesta (o algo parecido).


  • Los DTO no tienen ninguna lógica. Solo tienen campos (estado). Se utilizan cuando se transfieren datos de una capa / subsistema a otro
  • Los objetos de dominio pueden tener lógica (dependiendo de si está utilizando un diseño controlado por dominio o tiene un modelo de datos anémico) y generalmente están relacionados con la estructura de la base de datos.

Si utiliza un modelo de datos anémicos (es decir, los objetos de su dominio no tienen lógica), el objeto DTO y el objeto de dominio pueden ser el mismo objeto.

Relacionados: http://techblog.bozho.net/?p=427