2010-10-03 18 views
7

Posiadam w moim systemie podmiot, który naturalnie potrzebuje identyfikatora, aby można go było jednoznacznie zidentyfikować. Zakładając, że baza danych jest używana do generowania identyfikatora za pomocą Hibernate, używając strategii natywnej, oczywiście kod aplikacji jest wolny od tej odpowiedzialności przypisywania identyfikatorów. Czy instancja tej jednostki może zostać uznana za ważną przed jej utrwaleniem i otrzymaniem jej identyfikatora? Czy powinienem użyć jakiejś innej strategii, aby przypisać moje jednostki ich identyfikatory, aby otrzymały swój identyfikator po wywołaniu swojego konstruktora?Jednostka DDD i jej identyfikator

Odpowiedz

6

To rozległy temat, ale tutaj są dwie możliwości:

  • zdefiniować hashCode() i equals(..) kontrakty oparte na business keys. Na przykład dla jednostki User będzie to nazwa użytkownika, a nie automatycznie generowany identyfikator. W ten sposób będziesz mógł używać encji w kolekcjach, zanim utrwali ją jako klucz podstawowy, a następnie obsłużysz ją jako klucz podstawowy. Zobacz this article Jeff Atwood i this article demonstrując sposób używać go z hibernacji

(ponieważ można wymienić DDD i hibernacji przyjrzeć this article kopalni)

+0

Dzięki, myślę, że pójdę z druga opcja, sama wygeneruje identyfikatory. –

+0

+1 dla artykułu GUID –