Переопределение метода equals в DTO
Нужно ли переопределять методы equals и hashcode в DTO? Потому что DTO просто используется для передачи данных. Есть ли какая-нибудь передовая практика или что-то в этом отношении?
Спасибо.
Ответы
Ответ 1
В этой статье предлагается один совет:
Объекты, помещенные в список, набор или карту (как ключ или значение), должны иметь соответствующее определение равных.
Конечно, DTO используются не только для передачи, мы сохраняем их, сортируем, кешируем их...
На практике люди предоставляют равные и хэш-функции? Нет, не всегда. Должны ли мы? Я так думаю.
Ответ 2
Независимо от того, нужно ли вам обеспечить реализацию equals
и hashcode
для ваших классов DTO, зависит от того, как вы их используете.
Если вы используете их с одной или несколькими коллекциями, вы должны предоставить реализацию для соответствующего метода. Почти все коллекции вызывают equals
на хранящиеся объекты. Наборы таблиц на основе хэш-таблицы, такие как HashSet
и HashMap
вызов hashcode
, тогда как отсортированные коллекции, такие как TreeSet
и TreeMap
вызов compareTo
в дополнение к equals
.
Ответ 3
Если это становится слишком тривиальным, я могу рекомендовать использовать аннотации lombok
http://projectlombok.org/features/