Voici un petit problème
Avoir une entité, avec un objet valeur. Pas de problème. Je remplace un objet valeur par un nouveau, puis nhibernate insère la nouvelle valeur et rend orphelin l'ancienne, puis la supprime. D'accord, c'est un problème.
L'assuré est mon entité dans mon domaine. Il possède une collection d'adresses (objets de valeur). L'une des adresses est MailingAddress. Lorsque nous voulons mettre à jour l'adresse postale, disons que le code postal était incorrect, conformément à la doctrine de M. Evans, nous devons remplacer l'ancien objet par un nouveau car il est immuable (un objet de valeur, n'est-ce pas?).
Mais nous ne voulons pas supprimer la ligne, car le PK de cette adresse est un FK dans une table MailingHistory. Donc, suivant la doctrine de M. Evans, nous sommes à peu près foutus ici. À moins que je ne crée mes adresses, je n'ai donc pas besoin de le "remplacer" et de simplement mettre à jour son code postal, comme au bon vieux temps.
Que me suggéreriez-vous dans ce cas? À mon avis, les ValueObjects ne sont utiles que lorsque vous souhaitez encapsuler un groupe de colonnes de table de base de données (composant dans nhibernate). Tout ce qui a un identifiant de persistance dans la base de données, il vaut mieux en faire une entité (pas nécessairement une racine agrégée) afin que vous puissiez mettre à jour ses membres sans recréer le graphique d'objet entier, surtout s'il s'agit d'un objet profondément imbriqué.
Êtes-vous d'accord? Est-il permis à M. Evans d'avoir un objet de valeur mutable? Ou un objet de valeur mutable est-il candidat à une entité?
Merci