Non obsoleto. Dipende dall'architettura dell'applicazione se il pattern DTO deve essere usato o meno. Ad esempio, quando sviluppi servizi Web (usando JAX-WS o JAX-RS), devi inviare DTO sui tuoi metodi web in modo che un C# o un'applicazione client Python possa consumarlo, e il tuo metodo web non dovrebbe restituire un oggetto di classe Annotazioni Hibernate, ricorda che in altre lingue l'Entità non verrà creata con quelle annotazioni o altre logiche di business all'interno.
MODIFICA (in base al tuo commento): Dipende dall'architettura del software. Ad esempio, sto lavorando a un progetto SOA e utilizziamo DTO per il livello dei servizi e il livello di presentazione. Più approfonditi, utilizziamo anche DTO per gestire le comunicazioni del database all'interno dei servizi, usiamo solo gli SP per comunicare con DB, quindi nessun Hibernate o altri strumenti ORM possono funzionare lì, potremmo usare Spring DAO e tale framework utilizza anche DTO. Al giorno d'oggi è possibile trovare molti schemi DTO in molte applicazioni.
Maggiori informazioni che sarebbe grande per questa domanda:
EDIT 2: Un'altra fonte di informazioni che spiegherà il motivo principale per l'utilizzo di progettazione di DTO, spiega con Martin Fowler
Conclusione: DTO non un sono anti modello. I DTO sono pensati per essere utilizzati solo quando è necessario passare i dati da un sottosistema a un altro e non hanno un modo predefinito o standard per comunicare.
fonte
2012-06-28 06:02:10
Sì, in uno scenario del genere comprendo l'uso di DTO. Stai inviando risultati in un DTO. Ma per l'uso interno, le DTO non sono molto utili? – Thihara
@Thihara risposta modificata in base al tuo commento –
Secondo il tuo primo come è un pattern anti usato per aggirare il fatto che i bean di entità non erano serializzabili. Con un ORM il problema principale non esiste. – Thihara