Czytam książkę Erica Evansa o DDD i mam pytanie do następującego cytatu. W jaki sposób można wykonać metodę equals()
, gdy nie powinieneś używać atrybutów? Używam JPA i mam atrybut id, który jest unikalny, ale nie jest to ustawione, dopóki nie utrzymasz encji. Więc co robisz? Zaimplementowałem metodę równości opartą na atrybutach i rozumiem, dlaczego nie powinieneś, ponieważ nie powiodło się w moim projekcie.Elementy w projekcie opartym na domenie
Sekcja o podmiotach:
Gdy obiekt wyróżnia się swojej tożsamości, a nie jego cechy sprawiają, że tę podstawową jego definicją zawartą w modelu. Zachowaj definicję klasy prostą i skoncentrowaną na ciągłości cyklu życia i tożsamości . Zdefiniuj sposób odróżnienia każdego obiektu niezależnie od jego postaci lub historii. Bądź świadomy wymagań, które wymagają dopasowywania obiektów według atrybutów. Zdefiniuj operację, która jest gwarantowana dla , tworząc unikalny wynik dla każdego obiektu, prawdopodobnie poprzez dołączenie symbolu gwarantowanego unikatowo. Ten sposób identyfikacji może pochodzić z zewnątrz lub może być arbitralnym identyfikatorem utworzonym przez i dla systemu, ale musi odpowiadać rozróżnieniu w modelu. Model musi definiować, co to znaczy być tym samym.
http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
Możliwy duplikat, zobacz http://stackoverflow.com/questions/5031614/the-jpa-hashcode-equals-dilemma – MRalwasser
id działa dobrze dla mnie: http://stackoverflow.com/questions/7579404/using-auto-generated-id-of-hibenate-entity-object-in-the-equals-and-hashcode-met – NimChimpsky