2011-08-31 11 views
10

È necessario eseguire l'override dei metodi equals e hashcode in DTO? Perché le DTO sono usate solo per i dati di trasferimento. C'è qualche pratica migliore o qualcosa in merito?Ignora metodo uguale in DTO

Grazie.

risposta

10

This article offre un consiglio:

oggetti posti in una lista, Set, o mappa (sia come una chiave o un valore) dovrebbe avere una definizione appropriata di uguali.

Sicuramente DTOs sono utilizzati per più di un semplice trasferimento, noi li teniamo, ordinarli, li memorizzare nella cache ...

In pratica fanno gente forniscono eguali e hash? No non sempre. Dovremmo? Penso che sia così.

+0

"Questo è particolarmente vero per i '' classi che mappano ai record del database" data-centric sono DTOs mappati i record del database? penserei che sarebbero le tue entità/POJO, mentre le DTO sono semplicemente per il trasferimento dei dati e non dovrebbero contenere alcuna logica. –

+5

Esiste logica e logica ... Se si intende conservare i DTO nelle raccolte, è probabile che siano necessari hash e uguali. Ciò non implica l'aggiunta di una seria logica aziendale. – djna

+0

grazie per il chiarimento. –

3

Se è necessario fornire o meno le implementazioni equals e hashcode per le classi DTO dipende da come le si utilizza.

Se li si utilizza con una o più raccolte, è necessario fornire l'implementazione per il metodo appropriato. Quasi tutte le raccolte chiamano equals sugli oggetti che archiviano. Le raccolte basate su hash table come HashSet e chiamano hashcode, mentre le raccolte ordinate come TreeSet e TreeMap chiamano il metodo compareTo in aggiunta a equals.