2011-08-31 24 views

Odpowiedz

10

This article oferuje jedną radę:

obiektów umieszczonych na liście, ustaw lub mapy (albo jako klucz lub wartość) powinien mieć odpowiednią definicję równymi.

pewnością DTOs służą do więcej niż tylko przekazać, mamy utrzymać je, sortować je, buforować je ...

W praktyce ludzie nie zapewniają równych i hash? Nie zawsze. Powinniśmy? Chyba tak.

+0

„Jest to szczególnie prawdziwe w odniesieniu do«»klas, które są mapowane do rekordów bazy danych” data-centric są odwzorowywane DTOs do rekordów bazy danych? Myślę, że byłyby to twoje podmioty/POJO, podczas gdy DTO służą jedynie do transferu danych i nie powinny zawierać żadnej logiki. –

+5

Jest logika i logika ... Jeśli zamierzasz przechowywać DTO w kolekcjach, prawdopodobnie będziesz potrzebował haszu i równa. To nie oznacza dodania poważnej logiki biznesowej. – djna

+0

dzięki za wyjaśnienia. –

3

Niezależnie od tego, czy musisz dostarczyć equals i hashcode implementacji dla twoich zajęć DTO zależy od tego, jak ich używasz.

Jeśli używasz ich z co najmniej jedną kolekcją, powinieneś podać implementację odpowiedniej metody. Prawie wszystkie kolekcje wywołują na obiektach, które przechowują, equals. Zbiorcze zbiory tabelowe, takie jak HashSet i HashMap, wywołują hashcode, podczas gdy sortowane kolekcje, takie jak TreeSet i TreeMap, wywołują metodę oprócz equals.