He visto algunas preguntas similares:
- ¿Cuál es la diferencia entre un JavaBean y un POJO?
- ¿Cuál es la diferencia entre POJO (Objeto Java simple y antiguo) y DTO (Objeto de transferencia de datos)?
¿Puedes decirme también los contextos en los que se usan? ¿O el propósito de ellos?
Respuestas:
JavaBeans
Un JavaBean es una clase que sigue las convenciones de JavaBeans definidas por Sun. Wikipedia tiene un resumen bastante bueno de lo que son los JavaBeans :
POJO
Un objeto Java simple o POJO es un término introducido inicialmente para designar un objeto Java liviano simple, sin implementar ninguna
javax.ejb
interfaz, a diferencia del EJB 2.x de peso pesado (especialmente los beans de entidad, los beans de sesión sin estado no son tan malos IMO). Hoy, el término se usa para cualquier objeto simple sin cosas adicionales. Nuevamente, Wikipedia hace un buen trabajo al definir POJO :Objeto de valor
Un objeto de valor o VO es un objeto como el
java.lang.Integer
que contiene valores (por lo tanto, objetos de valor). Para una definición más formal, a menudo me refiero a la descripción de Martin Fowler de Value Object :Objeto de transferencia de datos
Data Transfer Object o DTO es un patrón (anti) introducido con EJB. En lugar de realizar muchas llamadas remotas en EJB, la idea era encapsular datos en un objeto de valor que pudiera transferirse a través de la red: un objeto de transferencia de datos. Wikipedia tiene una definición decente de objeto de transferencia de datos :
Entonces, para muchas personas, los DTO y VO son lo mismo (pero Fowler usa VO para significar algo más como vimos). La mayoría de las veces, siguen las convenciones de JavaBeans y, por lo tanto, también son JavaBeans. Y todos son POJOs.
fuente
class SomeClass { public String foo;public String bar; }
dentro de una clase con mucha lógica complicada, seguro que no es un JavaBean, no puede ser un VO ya que es mutable, ¿podría ser un DTO? aunque no está dirigido a invocaciones remotas de ningún tipo. ¿Se puede considerar un POJO?DTO vs VO
DTO: los objetos de transferencia de datos son solo contenedores de datos que se utilizan para transportar datos entre capas y niveles.
DTO se usó principalmente para transportar datos de manera eficiente a través de la red, incluso desde JVM a otra JVM.
Los DTO son a menudo
java.io.Serializable
, para transferir datos a través de JVM.VO: un objeto de valor [1] [2] se representa a sí mismo como un conjunto fijo de datos y es similar a una enumeración de Java. La identidad de un objeto de valor se basa en su estado más que en su identidad de objeto y es inmutable. Un ejemplo del mundo real sería Color.RED, Color.BLUE, SEX.FEMALE, etc.
POJO vs JavaBeans
[1] El Java-Beanness de un POJO es que a todos sus atributos privados se accede a través de captadores y establecedores públicos que se ajustan a las convenciones de JavaBeans. p.ej
[2] JavaBeans debe implementar Serializable y tener un constructor sin argumentos, mientras que en POJO no tiene estas restricciones.
fuente
Básicamente,
DTO: los "objetos de transferencia de datos" pueden viajar entre capas separadas en la arquitectura de software.
VO: "Objetos de valor" contienen un objeto como Integer, Money, etc.
POJO: Objeto Java antiguo simple que no es un objeto especial.
Java Beans: requiere
Java Class
que sea serializable, tenga unno-arg
constructor y un getter y setter para cada campofuente
Los Java Beans no son lo mismo que los EJB.
La especificación JavaBeans en Java 1.0 fue el intento de Sun de permitir que los objetos Java sean manipulados en un IDE que se parecía a VB. Se establecieron reglas para los objetos calificados como "Java Beans":
Los EJB llegaron después. Combinan componentes distribuidos y un modelo transaccional, ejecutándose en un contenedor que gestiona subprocesos, agrupación, ciclo de vida y proporciona servicios. Están muy lejos de Java Beans.
Los DTO surgieron en el contexto de Java porque la gente descubrió que la especificación EJB 1.0 era demasiado "hablador" con la base de datos. En lugar de hacer un viaje de ida y vuelta para cada elemento de datos, las personas los empaquetarían en Java Beans a granel y los enviarían.
Los POJO fueron una reacción contra los EJB.
fuente
POJO : Es un archivo java (clase) que no extiende ni implementa ningún otro archivo java (clase).
Bean : es un archivo java (clase) en el que todas las variables son privadas, los métodos son públicos y se utilizan getters y setters apropiados para acceder a las variables.
Clase normal : es un archivo java (clase) que puede consistir en variables públicas / privadas / predeterminadas / protegidas y que puede o no extender o implementar otro archivo java (clase).
fuente
Primero hablar sobre
Clase normal : eso significa que cualquier clase define que es normalmente en Java, significa que crea diferentes tipos de propiedades de método, etc.
Bean: Bean no es nada, es solo un objeto de esa clase en particular. .
y después de eso hablamos del último POJO
POJO - POJO es esa clase que no tiene ningún servicio, solo tiene un constructor predeterminado y una propiedad privada y esas propiedades para establecer un valor correspondiente a los métodos setter y getter. Es una forma abreviada de Plain Java Object.
fuente
diferencia-entre-valor-objeto-patrón-y-transferencia-de-datos-patrón
fuente