J'ai vu des questions similaires:
- Quelle est la différence entre un JavaBean et un POJO?
- Quelle est la différence entre POJO (Plain Old Java Object) et DTO (Data Transfer Object)?
Pouvez-vous également me dire dans quels contextes ils sont utilisés? Ou leur objectif?
Réponses:
JavaBeans
Un JavaBean est une classe qui suit les conventions JavaBeans définies par Sun. Wikipedia a un assez bon résumé de ce que sont les JavaBeans :
POJO
Un Plain Old Java Object ou POJO est un terme initialement introduit pour désigner un simple objet Java léger, ne mettant en œuvre aucune
javax.ejb
interface, contrairement aux EJB 2.x lourds (en particulier les Entity Beans, les Stateless Session Beans ne sont pas si mauvais que ça). Aujourd'hui, le terme est utilisé pour tout objet simple sans élément supplémentaire. Encore une fois, Wikipedia fait un bon travail pour définir POJO :Objet de valeur
Un objet de valeur ou VO est un objet tel que
java.lang.Integer
celui qui contient des valeurs (d'où des objets de valeur). Pour une définition plus formelle, je me réfère souvent à la description de Martin Fowler de l' objet de valeur :Objet de transfert de données
L'objet de transfert de données ou DTO est un (anti) modèle introduit avec EJB. Au lieu d'effectuer de nombreux appels distants sur des EJB, l'idée était d'encapsuler des données dans un objet de valeur qui pouvait être transféré sur le réseau: un objet de transfert de données. Wikipedia a une définition décente de l' objet de transfert de données :
Donc, pour beaucoup de gens, les DTO et les VO sont la même chose (mais Fowler utilise les VO pour signifier autre chose comme nous l'avons vu). La plupart du temps, ils suivent les conventions JavaBeans et sont donc aussi des JavaBeans. Et tous sont des POJO.
la source
class SomeClass { public String foo;public String bar; }
dans une classe avec beaucoup de logique compliquée, c'est sûr que ce n'est pas un JavaBean, ce ne peut pas être une VO car elle est mutable, est-ce DTO? bien qu'il ne soit pas ciblé pour des invocations à distance d'aucune sorte. Peut-il être considéré comme un POJO?DTO vs VO
DTO - Les objets de transfert de données ne sont que des conteneurs de données qui sont utilisés pour transporter des données entre des couches et des niveaux.
Le DTO était principalement utilisé pour faire transporter efficacement les données à travers le réseau, il peut même être de JVM à une autre JVM.
Les DTO sont souvent
java.io.Serializable
- afin de transférer des données à travers JVM.VO - Un objet de valeur [1] [2] représente lui-même un ensemble fixe de données et est similaire à une énumération Java. L'identité d'un objet de valeur est basée sur son état plutôt que sur son identité d'objet et est immuable. Un exemple réel serait Color.RED, Color.BLUE, SEX.FEMALE etc.
POJO vs JavaBeans
[1] Le Java-Beanness d'un POJO est que ses attributs privés sont tous accessibles via des getters et setters publics conformes aux conventions JavaBeans. par exemple
[2] JavaBeans doit implémenter Serializable et avoir un constructeur sans argument, alors que POJO n'a pas ces restrictions.
la source
Fondamentalement,
DTO: les «objets de transfert de données» peuvent voyager entre des couches distinctes dans l'architecture logicielle.
VO: "Les objets de valeur" contiennent un objet tel que Integer, Money, etc.
POJO: Plain Old Java Object qui n'est pas un objet spécial.
Java Beans: nécessite un
Java Class
pour être sérialisable, avoir unno-arg
constructeur et un getter et setter pour chaque champla source
Les Java Beans ne sont pas la même chose que les EJB.
La spécification JavaBeans dans Java 1.0 était la tentative de Sun de permettre aux objets Java d'être manipulés dans un IDE qui ressemblait à VB. Des règles étaient définies pour les objets qualifiés de "Java Beans":
Les EJB sont venus plus tard. Ils combinent des composants distribués et un modèle transactionnel, s'exécutant dans un conteneur qui gère les threads, la mise en commun, le cycle de vie et fournit des services. Ils sont loin de Java Beans.
Les DTO sont apparus dans le contexte Java parce que les gens ont découvert que la spécification EJB 1.0 était trop "bavarde" avec la base de données. Plutôt que de faire un aller-retour pour chaque élément de données, les gens les regrouperaient en Java Beans en vrac et les expédieraient.
Les POJO étaient une réaction contre les EJB.
la source
POJO : Il s'agit d'un fichier java (classe) qui n'étend ni n'implémente aucun autre fichier java (classe).
Bean : C'est un fichier java (classe) dans lequel toutes les variables sont privées, les méthodes sont publiques et les getters et setters appropriés sont utilisés pour accéder aux variables.
Classe normale : il s'agit d'un fichier java (classe) qui peut être constitué de variables publiques / privées / par défaut / protégées et qui peut ou non étendre ou implémenter un autre fichier java (classe).
la source
Tout d'abord parler
Normale classe - que de dire toute la classe définissent c'est un normalement en Java signifie que c'est des vous créez différents types de propriétés de la méthode , etc.
Bean - Bean est rien c'est seulement un objet de cette classe particulière en utilisant ce haricot , vous pouvez accéder à votre classe java même comme objet. .
et après cela, parler du dernier POJO
POJO - POJO est cette classe qui n'a aucun service, elle n'a qu'un constructeur par défaut et une propriété privée et ces propriétés pour définir une valeur correspondant aux méthodes setter et getter. C'est une forme courte d'objet Java simple.
la source
différence-entre-valeur-modèle-d'objet-et-modèle-de-transfert-de-données
la source