Question

est un transfert de données objet identique à la valeur d'objets ou ils sont différents? Si elles sont différentes, où devrions-nous utiliser un DTO et où doit-on utiliser une VO?

Le langage de programmation que nous parlons est Java et le contexte est - il y a une application web, qui va chercher des données à partir d'une base de données et traite ensuite et en fin de compte les informations traitées sont affichées sur le front-end

Était-ce utile?

La solution

Un objet de valeur est un objet simple dont l'égalité ne se fonde pas sur l'identité. Un objet de transfert de données est un objet utilisé pour transférer des données entre les sous-systèmes d'application logicielle, généralement entre les couches d'affaires et l'interface utilisateur. Il se concentre uniquement sur les données simples, donc il n'a pas le comportement.

Autres conseils

utiliser un DTO à la limite de vos services si vous ne voulez pas envoyer l'objet de domaine réel aux clients du service -. Cela permet de réduire les dépendances entre le client et le service

valeurs des objets sont des objets simplement dont l'égalité ne soit pas fondée sur l'identité par exemple java.lang.Integer

DTO et les objets de valeur ne sont pas vraiment des alternatives à l'autre.

Un objet de transfert de données est une bidouille pour déplacer un groupe de données d'une couche ou de niveau à l'autre, l'objectif est de réduire le nombre d'appels et-vient en emballant un tas de choses dans la même structure de données et l'envoyer ensemble. Certaines personnes utilisent aussi, comme Michael fait remarquer dans son poste , de sorte que les classes utilisées par une couche ne sont pas exposées à la couche appelant. Quand je parle de DTO comme une bidouille, je veux dire qu'il n'y a pas un concept abstrait précis se mis en œuvre, il est une solution pratique pour aider à la communication entre les couches d'application.

Une valeur objet est quelque chose que nous ne nous intéressons à sa valeur, comme un montant monétaire , une plage de dates, ou un code d'un table de consultation . Il n'a pas d'identité, ce qui signifie que vous ne seriez pas intéressé, si vous aviez plusieurs d'entre eux, de garder une trace de ce qui est qui, parce qu'ils ne sont pas des choses en elles-mêmes.

Contraste Valeur des objets à des choses qui n'ont une identité unique dans votre système, qui sont appelés entités. Si vous avez un système où il suit un client qui effectue un paiement, le client et le paiement sont des entités, parce qu'ils représentent des choses spécifiques, mais le montant monétaire sur le paiement est juste une valeur, il ne possède pas d'existence par lui-même, pour autant que votre système est concerné. Comment quelque chose se rapporte à votre système détermine si elle est un objet de valeur ou d'une entité.

Ils sont différents, mais je l'ai même utilisé les deux de manière interchangeable dans le passé, ce qui est faux. J'ai lu que DTO (transfert de données objet) a été appelé VO (Value Object) dans la première édition des modèles de base J2EE livre, mais n'a pas été en mesure de trouver cette référence.

DTO, que je l'ai parfois appelé un objet de transfert Dumb pour me aider à se rappeler qu'il est un récipient et ne devrait avoir aucune logique métier est utilisée pour les données de transport entre les couches et les niveaux. Il devrait juste être un objet avec des attributs qui a getters / setters.

A VO est cependant similaire à un JAVA Enum et représente un ensemble fixe de données. Une VO n'a pas l'identité de l'objet (l'adresse de l'instance d'objet en mémoire), il est identifié par sa valeur et est immuable.

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