2011-08-31 17 views
10

¿Es necesario anular los métodos equals y hashcode en DTO? Porque los DTO son solo uso para transferencia de datos. ¿Hay alguna mejor práctica o algo relacionado con esto?Ignorar método igual en DTO

Gracias.

Respuesta

10

This article ofrece un consejo:

objetos colocados en una lista, establezca o mapa (ya sea como una clave o valor) debe tener una definición apropiada de iguales.

Seguramente DTO se utilizan para algo más que la transferencia, las hacemos mantenemos, ordenar, almacenar en caché ellos ...

En la práctica qué gente proporcionan iguales y de hash? No no siempre ¿Deberíamos? Creo que si.

+0

"Esto es particularmente cierto para las 'clases', que se asignan a los registros de base de datos" centradas en los datos se asignan a las OTD registros de base de datos? creo que serían tus entidades/POJO, mientras que las DTO son simplemente para transferencia de datos y no deberían contener ninguna lógica. –

+5

Existe lógica y lógica ... Si va a mantener los DTO en colecciones, es probable que se necesiten hash e iguales. Eso no implica agregar una lógica comercial seria. – djna

+0

gracias por la aclaración. –

3

Si necesita o no proporcionar implementaciones equals y hashcode para sus clases de DTO depende de cómo las use.

Si los utiliza con una o más colecciones, debe proporcionar la implementación del método apropiado. Casi todas las colecciones llaman al equals en los objetos que almacenan. Las colecciones basadas en la tabla hash como HashSet y HashMap llaman hashcode, mientras que las colecciones ordenadas como TreeSet y TreeMap llaman al método compareTo además de equals.