Переопределение метода 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/