ejemplo - ¿Cuál es la diferencia entre JavaBean y POJO?
vo en programacion (6)
No estoy seguro de la diferencia. Estoy usando Hibernate y, en algunos libros, usan JavaBean y POJO como un término intercambiable. Quiero saber si hay una diferencia, no solo en el contexto de Hibernate, sino como conceptos generales.
POJO: si la clase se puede ejecutar con JDK subyacente, sin ninguna otra biblioteca externa de soporte de terceros, entonces se llama POJO
JavaBean: si la clase solo contiene atributos con accessors (setters y getters), estos se denominan javabeans. Por lo general, los beans Java no contendrán ninguna lógica de negocios, sino que se usarán para almacenar algunos datos en ella.
Todos los Javabeans son POJO pero todos los POJO no son Javabeans
Según Martin Fowler, un POJO es un objeto que encapsula la lógica de negocios mientras que un frijol (excepto la definición ya mencionada en otras respuestas) es poco más que un contenedor para contener datos y las operaciones disponibles en el objeto simplemente establecen y obtienen datos.
El término fue acuñado mientras Rebecca Parsons, Josh MacKenzie y yo nos preparábamos para una charla en una conferencia en septiembre de 2000. En la charla, señalamos los muchos beneficios de codificar la lógica empresarial en objetos regulares de Java en lugar de utilizar Entity Beans. Nos preguntamos por qué las personas estaban tan en contra de usar objetos regulares en sus sistemas y concluyeron que era porque los objetos simples carecían de un nombre elegante. Así que les dimos uno, y se capta muy bien.
Todos los JavaBeans son POJO pero no todos los POJO son JavaBeans.
Un JavaBean es un objeto Java que satisface ciertas convenciones de programación:
- la clase JavaBean debe implementar Serializable o Externalizable;
- la clase JavaBean debe tener un constructor público no-arg;
- todas las propiedades de JavaBean deben tener métodos públicos setter y getter (según corresponda);
- todas las variables de instancia de JavaBean deben ser privadas.
Un JavaBean sigue ciertas convenciones. Nombramiento de Getter / setter, tener un constructor predeterminado público, ser serializable, etc. Ver JavaBeans Conventions para más detalles.
Un POJO (plain-old-Java-object) no está rigurosamente definido. Es un objeto Java que no necesita implementar una interfaz en particular o derivar de una clase base particular, o hacer uso de anotaciones particulares para ser compatible con un marco dado, y puede ser arbitrario (a menudo relativamente simple) Objeto Java
POJOS
con ciertas convenciones (getter / setter, constructor público no-arg, variables privadas) y están en acción (por ejemplo, se utilizan para leer datos por formulario) son JAVABEANS
.
Pojo - Viejo objeto java liso
pojo class es una clase ordinaria sin especialidades, clase totalmente acoplada de tecnología / framework. la clase no implementa desde tecnología / framework y no se extiende desde tecnología / framework api esa clase se llama pojo class.
La clase pojo puede implementar interfaces y extender clases, pero la superclase o interfaz no debe ser una tecnología / marco.
Ejemplos:
1.
class ABC{
----
}
La clase ABC no implementa o se extiende desde la tecnología / framework por eso esta es la clase pojo.
2.
class ABC extends HttpServlet{
---
}
Clase ABC que se extiende desde api de tecnología servlet, por eso esta no es una clase pojo.
3.
class ABC implements java.rmi.Remote{
----
}
La clase ABC implementa desde rmi api por eso esta no es una clase pojo.
4.
class ABC implements java.io.Serializable{
---
}
esta interfaz es parte del lenguaje java que no forma parte de la tecnología / framework.so esto es pojo class.
5.
class ABC extends Thread{
--
}
Aquí thread también es clase de lenguaje java así que esta también es una clase pojo.
6.
class ABC extends Test{
--
}
si la clase Test amplía o implementa tecnologías / framework, entonces ABC tampoco es una clase pojo porque hereda las propiedades de la clase Test. si la clase de prueba no es una clase pojo, entonces la clase ABC tampoco es una clase pojo.
7.
ahora este punto es un caso excepcional
@Entity
class ABC{
--
}
@Entity
es una anotación dada por hibernate api o jpa api pero todavía podemos llamar a esta clase como clase pojo. la clase con anotaciones dadas desde la tecnología / framework se llama clase pojo por este caso excepcional.