web-dev-qa-db-fra.com

Différence entre les objets de transfert et les objets de domaine

Pourriez-vous expliquer la différence entre les objets de transfert et les objets de domaine en termes simples? Et si u pouvait donner un Java, ce serait génial ..

36
testndtv
  • Les DTO n'ont aucune logique. Ils n'ont que des champs (état). Ils sont utilisés lors du transfert de données d'une couche/sous-système à une autre
  • Les objets de domaine peuvent avoir une logique (selon que vous utilisez une conception pilotée par domaine ou un modèle de données anémique) et ils sont généralement liés à la structure de la base de données.

Si vous utilisez un modèle de données anémique (c'est-à-dire que vos objets de domaine n'ont pas de logique), le DTO et l'objet de domaine peuvent être le même objet.

Connexes: http://techblog.bozho.net/?p=427

52
Bozho

n objet de transfert de données (DTO) est utilisé pour échanger des données entre différentes parties d'une application (telles que différentes couches) ou différentes applications.

  • Les DTO sont simplement une structure de données "stupide".
  • Ils sont utilisés dans les contrats/définitions d'interface - cela signifie que tout composant qui utilise l'une de ces interfaces "connaît" ces objets.

Objets de domaine (DO) (et les classes dont ils sont dérivés) implémentent la logique métier, en tant que tels, ils ne sont situés que dans la couche/domaine de logique métier (la signification essentielle est la même, même si les termes sont différents).

Parce que DO implémente une logique métier, ils peuvent être complexes et peuvent inclure des méthodes, des événements, etc.

n dernier point sur les DTO

Selon l'école de pensée Martin Fowler, un DTO est une combinaison de plusieurs objets (dont chacun serait ce que la plupart des gens appellent communément un DTO); la raison en est que dans des situations, il est moins coûteux d'envoyer des paquets de données volumineux moins fréquemment (par opposition à être "bavard" et à envoyer de nombreux petits paquets en permanence sur le câble).

Donc, là où la plupart des gens considèrent un DTO comme un seul objet, Martin F dit qu'un DTO est simplement une "enveloppe" qui contient plusieurs objets discrets (et éventuellement non liés). Pas un gros problème OMI - la plupart des gens considèrent qu'un DTO est selon ma définition en haut de cette réponse (ou quelque chose de proche).

20
Adrian K

Les objets de transfert sont souvent sérialisables en raison de la nature de leur utilisation, cela est particulièrement pertinent si les appels sont distants et entre JVM, ou s'ils seront utilisés d'une manière qui favorise la sérialisation, comme les beans session avec état. A cet effet, les objets de transfert doivent être susceptibles de tels "traitements", c'est-à-dire Les objets de transfert implémentent sérialisables.

L'inverse ne peut pas être dit des objets de domaine. Les objets de domaine peuvent contenir un comportement, mais les DTO ne sont qu'un moyen de transport.

4
Oh Chin Boon