J'ai une question concernant Domain Driven Design. Dans le contexte du compte utilisateur/profil lié de mon application, il y a une entité utilisateur avec des informations de compte (identifiant, nom d'utilisateur, mot de passe, email, sel, etc.) et des informations de profil (nom complet, avatar, anniversaire, sexe, etc.). J'ai également un autre contexte délimité pour les postes/demandes d'emploi, dans lequel chaque poste a un utilisateur employeur et chaque demande d'emploi a un utilisateur demandeur.Conception pilotée par domaine: comment gérer les entités utilisateur dans un contexte délimité différent?
La question est de savoir si l'utilisateur employeur/demandeur dans un contexte lié à un emploi est la même entité utilisateur que j'utilise pour un contexte lié à un compte d'utilisateur. Ou devrais-je concevoir différentes entités de type Utilisateur pour l'Employeur et le Candidat?
Comme vous le voyez, seules les informations telles que id, fullname, email et avatar du contexte délimité par le compte sont pertinentes dans le contexte lié au job. Si l'employeur/demandeur est la même entité utilisateur du profil compte/utilisateur, il chargera beaucoup plus de données inutiles (pas besoin de connaître le mot de passe de l'utilisateur pour un employeur/demandeur). Mais si je leur crée des classes d'entités différentes, cela compliquera la persistance des données car les modifications apportées dans différentes classes d'entités peuvent modifier les mêmes données dans la même table de base de données.
Qu'en pensez-vous? Dois-je utiliser une entité utilisateur pour tous ou des entités utilisateur différentes pour différents contextes/agrégats liés? Si ce dernier est souhaitable, comment puis-je faire avec la persistance des données/entités?
Vos contextes liés partagent-ils la même base de données? Idéalement, ils ne devraient pas. Si tel est le cas, vous devez indiquer clairement quel BC possède les données et autoriser seulement BC à les modifier. – plalx
Je ne comprends pas ce que vous dites. C'est la même application, juste différents contextes bornés. J'utilise toujours la même DB sauf si c'est une application différente. –
BC sont généralement déployés en tant que micro-services et ont leur propre DB. – plalx