Quel est l'Objet de Transfert de Données?
Qu'est ce qu'un Objet de Transfert de Données?
MVC sont les classes du modèle DTO, et si non, quelles sont les différences et faire nous avons besoin des deux?
- et au fait, ce livre, dans cet article sait comment récupérer des données à partir de l'API et aussi la façon de stocker les données dans la DB, et ainsi de violer PRS, est ok?
Vous devez vous connecter pour publier un commentaire.
Un Objet de Transfert de Données est un objet qui est utilisé pour encapsuler les données, et de l'envoyer à partir d'un sous-système d'une application à l'autre.
Les dto sont les plus couramment utilisés par les Services de la couche dans un N-l'application de la couche de transfert de données entre lui-même et la couche d'INTERFACE utilisateur. Le principal avantage ici est qu'il réduit la quantité de données qui doit être envoyé à travers le fil dans les applications distribuées. Ils font aussi d'excellents modèles dans le modèle MVC.
Une autre utilisation pour les Dto peut être pour encapsuler les paramètres pour les appels de méthode. Cela peut être utile si une méthode prend plus de 4 ou 5 paramètres.
Lors de l'utilisation du pattern DTO, vous devriez également faire usage de DTO assembleurs. Les assembleurs sont utilisés pour créer des Otd à partir d'Objets du Domaine, et vice versa.
De la conversion de l'Objet Domaine de DTO et le dos encore une fois peut être un processus coûteux. Si vous n'êtes pas la création d'une application distribuée, vous n'aurez probablement pas voir de grands avantages de la répétition, comme Martin Fowler explique ici
La définition de DTO peut être trouvé sur Martin Fowler site. Les dto sont utilisés pour le transfert des paramètres aux méthodes et types de retour. Beaucoup de gens utilisent ceux de l'INTERFACE utilisateur, mais d'autres gonfler les objets de domaine à partir d'eux.
Un DTO est un muet objet qu'il détient des propriétés et a getters et setters, mais aucune autre logique de toute signification (autres que peut-être un compare() ou equals() de la mise en œuvre).
Généralement classes du modèle MVC (en supposant que .net MVC ici) sont Otd, ou des collections/agrégats de Dto
En général des Objets de Valeur de doit être Immuable. Comme Entier ou Chaîne objets en Java. Nous pouvons les utiliser pour transférer des données entre les couches logicielles. Si le logiciel des couches ou des services en cours d'exécution dans les différents nœuds distants comme dans un microservices de l'environnement ou dans un héritage Java Enterprise Application. Nous devons faire presque des copies exactes des deux classes. C'est la où nous avons rencontré des Otd.
En héritage Java Enterprise Systems Otd peut avoir différents EJB choses.
Je ne sais pas c'est une meilleure pratique ou pas, mais personnellement j'utilise des Objets de Valeur de dans mon Spring MVC/Boot Projets de ce type:
Contrôleur couche ne sais pas ce que sont les entités sont. Il communique avec Forme et Vue des Objets de Valeur de. Les Objets de formulaire a la JSR 303 Validation des annotations (par exemple @NotNull) et Vue des Objets de Valeur de ont Jackson Annotations pour la sérialisation personnalisée. (par exemple @JsonIgnore)
De la couche de Service communique avec le dépôt de la couche par l'aide d'Objets de l'Entité. Objets de l'entité ont JPA/Hibernate/Spring annotations de Données sur elle. Chaque couche communique avec seulement la couche inférieure. L'inter-couche de communication est interdite en raison de la circulaire/dépendance cyclique.
Certains ORM Cadres ont la capacité de projection en utilisant l'aide d'autres interfaces ou des classes. Donc, les référentiels peuvent retour Afficher les objets directement. Il y a pour vous n'avez pas besoin d'une transformation supplémentaire.
Par exemple notre entité Utilisateur:
Mais vous devez retourner un Paginé liste des utilisateurs qui vient d'identité, firstname, lastname. Ensuite, vous pouvez créer une Vue d'Objet de Valeur pour l'ORM de projection.
Vous pouvez facilement obtenir le paginé résultat de dépôt de la couche. Merci de printemps, vous pouvez également utiliser les interfaces pour les projections.
Ne vous inquiétez pas pour les autres opérations de conversion
BeanUtils.copy
méthode fonctionne très bien.GET
/POST
/whatever) d'extrémité de quelque part, ou la consommation d'un service web en utilisant SOA, etc...) vous ne souhaitez pas transmettre la grande taille de l'objet avec un code qui n'est pas nécessaire pour le point de terminaison, consomment de données, et de ralentir le transfert.Avec MVC objets de transfert de données sont souvent utilisées pour cartographier les modèles de domaine à la plus simple des objets qui vont en fin de compte affiché par la vue.
De Wikipédia: