Je pense que cela est subjectif et dépend de votre conception.
Surtout si cela semble être une conception qui provient d'un enregistrement actif . Dans un enregistrement actif, votre entité dispose de méthodes pour effectuer des opérations de base de données et doit donc également connaître son identifiant de base de données.
Lorsque vous utilisez d'autres modèles tels qu'un référentiel avec un mappeur de données stockant ces données dans l'objet, cela devient inutile et peut-être inapproprié.
Prenons par exemple un Person
objet. On me donne un nom qui peut ou non être unique au sein d'une famille. Comme la population a grandi, les noms plus grands ne sont plus uniques et nous avons donc trouvé des identifiants de substitution pour un système de plus en plus grand. Par exemple: mon permis de conduire et mon numéro de sécurité sociale. Je ne suis pas né avec un identifiant, tous ces identifiants doivent être demandés.
La plupart d'entre eux ne font pas de bonnes clés primaires / identifiants pour les logiciels, car ils ne sont pas universels. Du moins pas en dehors de leur système spécifique, il est évident qu'un SSN est unique et cohérent avec la Social Security Administration. Puisque nous ne sommes généralement pas les fournisseurs de ces informations, vous ne les appelleriez pas id
mais plutôt les données qu'ils représentent, par exemple SSN
. Parfois, même contenir l'objet composé complet comme un DriversLicense
qui pourrait contenir toutes les informations du permis de conduire.
Tous les identifiants généraux sont donc des clés de substitution dans le système et pourraient être remplacés par des références en mémoire, ne contenant que des identifiants pour faciliter la recherche et la persistance d'enregistrements.
Puisqu'une id
n'est pas une donnée conceptuelle, je doute qu'elle fasse (généralement) partie de l'objet, car elle ne vient pas du domaine. Il devrait plutôt être conservé dans son but qui est d'identifier un objet qui n'a pas d'autre moyen de représenter une identité unique. Cela pourrait être fait dans un référentiel / collection avec easy.
Dans le logiciel, si vous devez représenter l'objet sous forme de liste, ou le conserver, vous pouvez simplement le faire à partir de l'objet de référentiel / collection, ou d'un autre objet associé à cela. Lorsque vous passez au Data Mapper (s'il est séparé), vous pouvez simplement passer .update( id, obj )
.
Avis de non - responsabilité : je n'ai pas encore essayé de construire un système qui ne contient pas l'identifiant au sein de l'entité et peut donc me prouver le contraire.