2010-03-13 15 views

Répondre

5

La principale motivation des DTO est de présenter une interface adaptée à une autre couche (typiquement, la couche de présentation). Par exemple, un écran de saisie de données peut nécessiter des bits de données d'un objet Utilisateur en plus de quelques bits d'un ordre, etc. Dans ce cas, le domaine vers DTO doit se produire au niveau de la couche de présentation, typiquement une couche "service".

Il existe des bibliothèques comme Dozer là-bas qui permettent d'automatiser le travail de grognement de conversion entre les modèles de domaine et DTO. La clé à emporter est que les DTO visent à extraire les données (pas la logique métier) des objets de modèle de domaine plus riche - par conséquent, les DTO doivent être reconvertis en objets de domaine le plus tôt possible (au niveau de la couche de service). de vos couches d'application peut fonctionner avec des objets de domaine plus riches (données et logique métier)

2

Je ne suis pas très fan des DTO, mais je ne le fais pas dans la couche de données. La couche de données traite des objets du modèle et de leur persistance. Pourquoi le coupler avec d'autres couches en y apportant des DTO? Je les cartographierais ailleurs, probablement entre le service et les tiers, juste au point où ils traversent la frontière entre l'endroit où ils sont créés et l'endroit où ils sont utilisés.