9

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?Un oggetto di trasferimento dati è uguale all'oggetto valore?

Il linguaggio di programmazione di cui stiamo parlando è Java e il contesto è - v'è un'applicazione web, che recupera i dati da un database e quindi lo elabora e, infine, le informazioni elaborate viene visualizzato sul front-end

+0

In quale linguaggio di programmazione o in altri contesti si pone la domanda? – Marcin

+0

Il linguaggio di programmazione è Java e il contesto è: c'è un'applicazione web che preleva i dati da un database e poi li elabora e in definitiva le informazioni elaborate vengono visualizzate sul front-end – Gaurav

+0

Quindi aggiungilo alla domanda e taggalo in modo appropriato ; – Marcin

risposta

8

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

+0

Puoi per favore approfondire "la cui uguaglianza non è basata sull'identità? ", dando qualche esempio? – Gaurav

+1

Potrei immaginare che questa frase significherebbe che un VO non deve mappare direttamente contro un'entità di dominio, piuttosto che su alcuni campi di essa o su una diversa "immagine" di esso. Di solito un VO è lo stesso di un DTO, ma DTO si basa più sulla "composizione del campo" (alcuni campi da diverse classi di dominio). Un esempio di DTO potrebbe essere una composizione tra campi di una classe CustomerAddress e una classe Customer per servirla al livello di presentazione. – frandevel

+1

@Gaurav due oggetti valore sono uguali quando hanno gli stessi valori, ma non necessariamente lo stesso oggetto ... – JuanZe

2

utilizzare un DTO al limite dei servizi se non si desidera inviare l'oggetto dominio effettivo ai client del servizio: ciò consente di ridurre le dipendenze tra client e servizio.

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

I DTO e gli oggetti valore non sono realmente alternativi l'uno all'altro.

2

Un oggetto di trasferimento dati è un kludge per spostare un gruppo di dati da un livello o livello a un altro, l'obiettivo è di ridurre al minimo il numero di chiamate avanti e indietro imballando un sacco di elementi nella stessa struttura dati e inviando insieme. Alcune persone lo usano anche, come Michael points out in his post here, in modo che le classi utilizzate da un livello non siano esposte al livello che lo chiama. Quando faccio riferimento a DTO come kludge, voglio dire che non è stato implementato un preciso concetto astratto, è una soluzione pratica per aiutare nella comunicazione tra i livelli dell'applicazione.

Un oggetto valore è qualcosa a cui interessa solo il suo valore, ad esempio un monetary amount, un intervallo di date o un codice da un lookup table. Non ha un'identità, il che significa che non ti preoccupi, se ne hai diversi, di tenere traccia di quale sia, perché non sono cose in sé.

Contrast Value Oggetti a oggetti che hanno un'identità univoca nel sistema, denominati Entità. Se hai un sistema in cui tiene traccia di 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 da solo, per quanto riguarda il tuo sistema. Il modo in cui qualcosa si riferisce al tuo sistema determina se si tratta di un oggetto valore o entità.

Problemi correlati