Le modèle DTO est-il déprécié ou non?
Dans une application Java EE que le cluster est le pattern DTO encore une option valide? L'application en question utilise des Ejb Hibernate et Struts avec le Printemps, etc. Il n'y a rien de mal avec le transfert des objets de domaine dans un tel scénario?
EDIT: Juste pour préciser ma question, avec le jour moderne des ressources et des améliorations dans Java EE est-il une raison de ne pas simplement utiliser des objets du domaine? Si il n'est alors n'est-ce pas DTO de tri des échantillons de la décoloration et ne doit pas être utilisé dans de nouvelles applications?
source d'informationauteur Thihara
Vous devez vous connecter pour publier un commentaire.
N'est pas déconseillée. Cela dépend de l'architecture de l'application si la DTO modèle doit être utilisé ou non. Par exemple, lorsque vous développez des Services Web (à l'aide de JAX-WS ou de JAX-RS), vous devez envoyer DTO de plus de votre site web à des méthodes de C# ou Python application client peut consommer, et votre site web ne devrait pas retourner un objet de la classe a Hibernate annotations, n'oubliez pas que dans d'autres langues que l'Entité ne sera pas créé avec ces annotations ou d'une autre logique métier à l'intérieur.
MODIFIER (en Fonction de votre commentaire): cela dépend de l'architecture du logiciel. Par exemple, je travaille sur un projet SOA et nous utilisons des DTO pour les Services de la Couche et la Couche de Présentation. Plus en plus à l'intérieur, nous utilisons même DTO à gérer la base de données de communication à l'intérieur des services, nous utilisons uniquement des SP de communiquer avec la DB, donc pas de mettre en veille prolongée ou tout autre outils ORM peuvent y travailler, nous pourrions utiliser Printemps DAO et ce cadre utilise DTO est trop. Vous pouvez trouver beaucoup de DTO modèle dans de nombreuses applications de nos jours.
Plus d'infos ce serait super pour cette question:
EDIT 2: une Autre source d'information qui vous expliquera la raison principale de l'utilisation de DTO conception, expliqué par Martin Fowler
Conclusion: DTO sont pas un anti-modèle. DTO sont destinés à être utilisés uniquement lorsque vous en avez besoin pour passer des données d'un sous-système à l'autre et qu'ils n'ont pas un défaut ou standar façon de communiquer.
C'est un très bon modèle en Java EE.
- Je utiliser un DTO de transfert des objets de l'entité de beans EJB de la couche d'INTERFACE utilisateur. L'entité objets sont récupérés à partir de DB dans une transaction (voir TransactionAttributeType.REQUIS) et stockées dans la DTO de l'objet. La DTO consommé dans la couche d'INTERFACE utilisateur.
Est un modèle au design épuré. Il n'y a pas de "dépréciation" de modèle, mais de moins en moins à l'utilisation de plus de temps (ou d'utilisation).
Personnellement, je ne vois pas pourquoi ne pas utiliser les Dto.
Par exemple - à oVirt projet open source, nous avons des entités représentant des entités logiques dans le domaine de la Virtualisation.
Ces entités doivent être annotés par Hibernate annotations (en fait, ils sont aujourd'hui, comme nous avons commencé à travailler sur hibernate Cop) et servent de l'Otd , et alors propre à partir des annotations objets mappés à eux (disons, à l'aide de dozer cadre) et utilisé par le client
(Je n'aime pas avoir à côté client code inutiles annotations), ou les entités doivent servir le client des objets (des objets de valeur) transmis au client et nous devrions avoir d'autres classes servent de la DTO des entités
Du moins dans l'approche ci-dessus est ce que vous pourriez avoir 2 en parallèle les diagrammes de classe - un pour Otd et un pour les objets de valeur (qui sont utilisés par les clients) - mais , dans de nombreux cas , il existe un compromis.
Vous devez comprendre les avantages et les inconvénients et de choisir ce qui est le mieux pour vous (Dans notre cas, puisque le client GWT, il sera plus facile pour nous d'aller à la séparation de deux hiérarchies de classe, celui qui est DTO/côté serveur et peut également être annotée avec plus côté serveur uniquement les annotations, et l'autre envoyé à l'GWT code client).