DTO Pattern

Il pattern DTO (Data Transfer Object) suggerisce ti utilizzare oggetti diversi dai modelli di dominio per trasferire i dati da back-end a front-end. Può essere utile quando si vuole alleggerire il carico di dati trasferiti, portando a front-end solo i dati realmente necessari alla logica di business.

Un oggetto DTO è serializzabile, contiene solo i dati necessari, può riunire dati da diversi modelli di business e ha come scopo il trasferimento di dati.

E’ buona pratica utilizzare una Factory o implementare un oggetto che faccia da “assemblatore”, che contenga cioè la logica per le trasformazioni modello/dto e dto/modello.

Immagine

Per EJB 3.0 DTO è considerato un anti-pattern...perché?

L’argomento è oggetto di dibattuto: con EJB 3.0 le entità sono in pratica del POJO, quindi possono essere resi serializzabili, “detachati”  e trasportati da server a client, risparmiando tutto il lavoro necessario a creazione e gestione del DTO e la duplicazione dei dati di modello.

Di contro, senza DTO aumenta probabilmente i carico di dati sulla rete in quando vengono recuperati anche dati non strettamente necessari al client, ancora di più se se vogliono mostrare dati provenienti da diversi modelli del dominio.

Alla fine, la scelta se utilizzare o meno DTO non può essere assoluta a mio parere, ma dipende dai requisiti e dalla funzionalità della singola applicazione.

L’anti-pattern fa riferimento più che altro ad un ABUSO nell’uso dei DTO: DTO Explosion!

Cosa si intende? EJB che restuiscono più di un DTO per entità di dominio, tipicamente un DTO per ogni view o per ogni caso d’uso.

Quali problemi causa? Molto lavoro per mantenere i DTO a fronte di cambiamenti delle entity e riduzione della riusabilità dei DTO visto il loro stretto legame con view specifiche.

See more at
http://www.corej2eepatterns.com/Patterns2ndEd/TransferObject.htm
http://www.jroller.com/raghukodali/entry/dto_an_antipattern_in_ejb
http://www.softwaresummit.com/2003/speakers/DudneyJ2EEAntiPatterns.pdf
http://blog.frankel.ch/dto-in-anger
Annunci