2010-10-03 1 views
7

Ich habe eine Entität in meinem System, die natürlich eine Kennung benötigt, damit sie eindeutig identifiziert werden kann. Unter der Annahme, dass die Datenbank zum Erzeugen des Identifizierers mit Hibernate unter Verwendung der nativen Strategie verwendet wird, ist der Anwendungscode offensichtlich frei von dieser Verantwortlichkeit zum Zuweisen von Identifizierern. Kann nun eine Instanz dieser Entität als gültig betrachtet werden, bevor sie beibehalten wird und ihre Kennung erhält? Oder sollte ich eine andere Strategie verwenden, um meinen Entitäten ihre Bezeichner zuzuweisen, so dass sie ihren Bezeichner erhält, wenn ihr Konstruktor aufgerufen wird?DDD Entity und seine Kennung

Antwort

6

die ein umfangreiches Thema ist, aber hier sind zwei Möglichkeiten:

  • definieren Sie Ihre hashCode() und equals(..) Verträge basierend auf business keys. Bei einer Entität User wäre dies beispielsweise der Benutzername und nicht die automatisch generierte ID. Somit können Sie die Entität in Sammlungen verwenden, bevor sie persistent ist.

  • Verwenden Sie UUID als Primärschlüssel, und behandeln Sie die Generierung selbst. Siehe this article von Jeff Atwood und this article einen Weg zeigen, es zu benutzen, mit Hibernate

(Da Sie erwähnen DDD und Hibernate, werfen Sie einen Blick auf this article von mir)

+0

Danke, ich glaube, ich gehe mit Die zweite Option erzeugt selbst IDs. –

+0

+1 für GUID-Artikel –