En quoi le modèle ActiveRecord diffère-t-il du modèle Objet de domaine ou Mappeur de données?

StackOverflow https://stackoverflow.com/questions/93773

Question

Je regardais DataMapper , qui semblait à première vue utiliser le modèle ActiveRecord ORM. D'autres personnes ont déclaré qu'il utilise le modèle DataMapper et / ou Domain Object.

Quelle est la différence entre ces modèles?

Était-ce utile?

La solution

La principale différence entre les deux modèles est la suivante:

  • Dans ActiveRecord, vous avez un objet de domaine qui connaît à la fois toute la logique métier et comment s’enregistrer / se mettre à jour dans la base de données, user.getLinkToProfile () et User :: find (1), User :: save (utilisateur)

  • Dans le modèle DataMapper, vous avez un objet de domaine qui contient toute la logique métier, par exemple, user.getLinkToProfile () (ou quelque chose de similaire) mais ne connaît rien de la base de données en question, en plus de cela, vous avez un objet mappeur qui est responsable de la sauvegarde, de la mise à jour, de la sélection, etc. des objets utilisateur de la base de données contenant UserMapper :: find (1), UserMapper.save (utilisateur)

DataMapper est potentiellement plus complexe qu’ActiveRecord, mais il est beaucoup plus facile de développer votre modèle de domaine et votre base de données de manière asynchrone puis avec ActiveRecord.

Autres conseils

L'enregistrement actif est très volumineux, le mappeur de données et l'objet de domaine séparent ces problèmes de sorte que vous disposiez d'un ensemble de codes plus défini effectuant divers aspects pour vous "domaine". ou " entité " objets.

Personnellement, je préfère, non pas que vous le demandiez, séparer les objets de domaine, les mappeurs de données, utiliser probablement un modèle d'assemblage et même un modèle de transfert de données pour assurer une séparation claire de ce qu'il advient des données entre la base de données et les niveaux supérieurs d'une application.

... des séparations élégantes et simples aident toujours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top