2010-10-03 9 views
7

J'ai une entité dans mon système, qui a naturellement besoin d'un identifiant pour pouvoir l'identifier de manière unique. En supposant que la base de données est utilisée pour générer l'identifiant avec Hibernate, en utilisant la stratégie native, alors évidemment le code de l'application est libre de cette possibilité d'assigner des identifiants. Maintenant, une instance de cette entité peut-elle être considérée comme valide avant d'être persistante et d'obtenir son identifiant? Ou devrais-je utiliser une autre stratégie pour assigner leurs identifiants à mes entités afin qu'elles obtiennent leur identifiant quand leur constructeur est appelé?DDD Entity et son identifiant

Répondre

6

C'est un vaste sujet, mais voici deux possibilités:

  • Définissez vos hashCode() et equals(..) contrats basés sur business keys. Par exemple, pour une entité User, il s'agit du nom d'utilisateur plutôt que de l'ID généré automatiquement. Ainsi, vous serez en mesure d'utiliser l'entité dans les collections avant qu'elle ne soit conservée

  • utilisez UUID comme clé primaire et gérez vous-même la génération. Voir this article par Jeff Atwood et this article la démonstration d'une façon de l'utiliser avec Hibernate

(Puisque vous parlez de DDD et mise en veille prolongée, jetez un oeil à la mine this article)

+0

Merci, je pense que je vais aller avec la deuxième option, va générer des identifiants moi-même. –

+0

+1 pour l'article GUID –