12
votes

Comment les objets de valeur sont enregistrés et chargés?

Depuis qu'il n'y a pas de respectueuses pour des objets de valeur. Comment puis-je charger tous les objets de valeur?

Supposons que nous modélisons une application de blog et que nous avons ces classes:

  • post (entité)
  • Commentaire (Objet de valeur)
  • Tag (Objet de valeur)
  • postsRespository (respectueux)

    Je sais que lorsque je sauvegarder un nouveau message, ses balises sont enregistrées avec elle dans la même table. Mais comment pourrais-je charger toutes les étiquettes de tous les messages. Le postsResSiterie doit-il avoir une méthode pour charger toutes les balises? Je le fais habituellement, mais je veux connaître les opinions des autres


0 commentaires

3 Réponses :


3
votes

Je travaille actuellement dans un exemple similaire. Une fois que vous devez faire référence à des étiquettes de manière unique, ils ne sont pas de longs objets de valeur simples et peuvent continuer à croître en complexité. J'ai décidé de leur faire leurs propres entités et de créer un référentiel séparé pour les récupérer. Dans la plupart des scénarios, ils sont chargés ou enregistrés avec le poteau, mais lorsqu'ils sont requis seuls, l'autre référentiel est utilisé.

J'espère que cela vous aidera.

EDIT: En partie grâce à ce message, j'ai décidé de restructurer ma demande légèrement. Vous avez raison que j'avais probablement mal à faire des tags une entité. J'ai depuis modifié mon application afin que les balises ne soient que des chaînes et que le référentiel post traite toutes les exigences de stockage autour des balises. Pour les opérations nécessitant des postes, les balises sont chargées avec elles. Pour toute opération qui nécessite juste des étiquettes ou des listes de balises, le référentiel a des méthodes pour cela.


2 commentaires

Merci d'avoir répondu. Donc, vous avez un tagsRepository. Avez-vous une table de tags dans la base de données aussi?


En fait, je n'ai pas encore décidé de la base de données. Je n'aurai probablement pas de base de données séparée et je compte fortement en considérant une solution d'objet ou de base de données de documents comme Mongo ou Couch.



12
votes

Je cherche une meilleure solution pour cette question et j'ai trouvé ce message:

http: // gojko .NET / 2009/09/30 / DDD-and-Relationnel-Bases de données-the-Valeur-Object-Dilemma /

Cet article explique très bien pourquoi il y a beaucoup de confusion avec des objets de valeur et des bases de données. Voici une phrase qui m'a trop aimé:

  • " la persistance n'est pas une excuse pour tout transformer en entités. "

    GOJKO ADZIC, Donnez-nous trois alternatives pour enregistrer nos objets de valeur.


3 commentaires

Les bases de données relationnelles et les ormettes nous ont souvent trompés dans la création d'entités accidentelles Jefclaes.be/2013/05/accidentialité-you-dont-need-hat.h TML


@yeraycaballero Si j'enregistre la valeur objet dans une colonne de texte (option 3), comment dois-je faire pour effectuer une mise à jour atomique sur l'objet de la valeur?


@yeraycaballero Un si bel article qui m'aidait beaucoup. Merci



0
votes

Voici mon emprunte comment je pourrais résoudre ce type de problème dans la manière dont je pratique actuellement DDD.

Si vous modifiez quelque chose qui nécessite que des balises soient ajoutées et supprimées de tels que un message, les étiquettes peuvent être des entités, mais elles pourraient peut-être être des objets de valeur et sont chargés et enregistrés avec le poste de la manière. J'ai personnellement tendance à favoriser des objets de valeur que si l'objet doit être modifié, mais je me rends compte qu'il existe une différence entre l'objet d'entité modélisé comme indiquant uniquement des "instantanés" et des objets de valeur réelle qui manquent d'identité. La partie délicate est que peut-être parfois ce que vous penseriez normalement comme une clé pourrait faire partie d'un objet de valeur tant qu'il n'est pas utilisé comme identité dans ce contexte et je pense que les balises tombent dans cette catégorie.

Si vous modifiez les étiquettes elles-mêmes, il s'agit probablement d'un contexte délimité séparé ou d'au moins un agrégat séparé dans lequel les étiquettes sont elles-mêmes sont la racine globale et persistait via un référentiel. Notez que la classe d'entités qui représente des balises dans ce contexte ne doit pas nécessairement être la même classe d'entité pour les étiquettes utilisées dans l'agrégat post.

Si votre liste est disponible des balises disponibles à l'écran à lecture seule sur la lecture des objectifs, tels que fournir une liste de sélection, c'est probablement une liste d'objets de valeur. Ces objets de valeur peuvent, mais ne doivent pas nécessairement être dans le modèle de domaine car ils portent principalement de soutien de l'interface utilisateur et non du domaine actuel.

S'il vous plaît choisir si quelqu'un a une pensée sur la raison pour laquelle je suppose que cela pourrait être faux, mais c'est comme ça que je le fais.


0 commentaires