Domanda

Un oggetto di trasferimento dati è uguale all'oggetto valore o è diverso?Se sono diversi, dove dovremmo usare un DTO e dove dovremmo usare un VO?

Il linguaggio di programmazione di cui stiamo parlando è Java e il contesto è: esiste un'applicazione web, che recupera i dati da un database e poi li elabora e infine le informazioni elaborate vengono visualizzate sul front-end

È stato utile?

Soluzione

Un oggetto valore è un oggetto semplice la cui uguaglianza non è basata sull'identità. Un oggetto di trasferimento dati è un oggetto utilizzato per trasferire i dati tra i sottosistemi dell'applicazione software, solitamente tra i livelli aziendali e l'interfaccia utente.Si concentra solo su dati semplici, quindi non ha alcun comportamento.

Altri suggerimenti

utilizza un DTO al confine dei tuoi servizi se non desideri inviare l'effettivo oggetto di dominio ai client del servizio: questo aiuta a ridurre le dipendenze tra il client e il servizio.

valori oggetti sono semplicemente oggetti la cui uguaglianza non è basata sull'identità, ad es.java.lang.Integer

DTO e oggetti valore non sono realmente alternativi tra loro.

Un oggetto di trasferimento dati è un kludge per spostare un gruppo di dati da un livello o livello a un altro, l'obiettivo è ridurre al minimo il numero di chiamate avanti e indietro comprimendo un mucchio di cose nella stessa struttura di dati e inviandolo insieme. Alcune persone lo usano anche, come Michael sottolinea nel suo post qui , in modo che le classi utilizzate da un livello non siano esposte al livello che lo chiama. Quando mi riferisco a DTO come a un kludge, intendo che non c'è un preciso concetto astratto da implementare, è una soluzione pratica per aiutare con la comunicazione tra i livelli dell'applicazione.

Un oggetto valore è qualcosa in cui siamo interessati solo al suo valore, come un importo monetario , un intervallo di date o un codice da un tabella di ricerca . Non ha un'identità, il che significa che non ti preoccuperesti, se ne avessi diversi, di tenere traccia di quale è quale, perché non sono cose in sé.

Contrasta gli oggetti valore con le cose che hanno un'identità univoca nel tuo sistema, che sono chiamate entità. Se hai un sistema in cui traccia un cliente che effettua un pagamento, il cliente e il pagamento sono entità, perché rappresentano cose specifiche, ma l'importo monetario sul pagamento è solo un valore, non ha un'esistenza di per sé, per quanto riguarda il tuo sistema. Il modo in cui qualcosa si collega al tuo sistema determina se si tratta di un oggetto valore o di un'entità.

Sono diversi, ma in passato li ho persino usati in modo intercambiabile, il che è sbagliato.Ho letto che DTO (Data Transfer Object) era chiamato VO (Value Object) nella prima edizione del libro Core J2EE Patterns, ma non sono riuscito a trovare quel riferimento.

Un DTO, che a volte ho chiamato Dumb Transfer Object per ricordarmi che è un contenitore e non dovrebbe avere alcuna logica aziendale, viene utilizzato per trasportare i dati tra livelli e livelli.Dovrebbe essere solo un oggetto con attributi che ha getter / setter.

Tuttavia, un VO è simile a un JAVA Enum e rappresenta un insieme fisso di dati.Un VO non ha l'identità dell'oggetto (l'indirizzo dell'istanza dell'oggetto in memoria), è identificato dal suo valore ed è immutabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top