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.
fuente
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.
Un JavaBean sigue ciertas convenciones. Nombramiento de getter / setter, tener un constructor público predeterminado, ser serializable, etc. Ver Convenciones JavaBeans para más detalles.
Un POJO (plain-old-Java-object) no está rigurosamente definido. Es un objeto Java que no tiene el requisito de implementar una interfaz 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
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:
fuente
Serializable
.Según Martin Fowler, un POJO es un objeto que encapsula Business Logic, mientras que un Bean (a excepción de la definición ya establecida en otras respuestas) es poco más que un contenedor para almacenar datos y las operaciones disponibles en el objeto simplemente establecen y obtienen datos.
fuente
POJO: si la clase se puede ejecutar con JDK subyacente, sin ninguna otra biblioteca externa externa compatible, entonces se llama POJO
JavaBean: si la clase solo contiene atributos con accesores (setters y getters), esos se denominan javabeans. Los beans de Java generalmente no contendrán ninguna lógica de negocios, sino que se usarán para contener algunos datos.
Todos los Javabeans son POJOs pero todos los POJO no son Javabeans
fuente
Pojo - Objeto java antiguo simple
La clase pojo es una clase ordinaria sin ninguna especialidad, una clase totalmente acoplada libremente de tecnología / marco. La clase no se implementa desde tecnología / marco y no se extiende desde la tecnología / marco api, esa clase se llama clase pojo.
La clase pojo puede implementar interfaces y extender clases, pero la superclase o interfaz no debe ser una tecnología / marco.
Ejemplos:
1)
La clase ABC no se implementa o se extiende desde la tecnología / marco, por eso esta es una clase pojo.
2)
La clase ABC se extiende desde la API de tecnología de servlet por eso esta no es una clase pojo.
3)
La clase ABC se implementa desde rmi api, por eso esta no es una clase pojo.
4)
esta interfaz es parte del lenguaje java, no parte de la tecnología / framework.so es una clase pojo.
5)
aquí el hilo también es una clase de lenguaje java, por lo que también es una clase pojo.
6)
si la clase Test se extiende o implementa desde tecnologías / framework, ABC tampoco es una clase pojo porque hereda las propiedades de la clase Test. si la clase Test no es una clase pojo, entonces la clase ABC tampoco es una clase pojo.
7)
ahora este punto es un caso excepcional
@Entity
es una anotación dada por hibernate api o jpa api pero aún así podemos llamar a esta clase como clase pojo. clase con anotaciones dadas por la tecnología / marco se llama clase pojo por este caso excepcional.fuente
Especialidades enumeradas a continuación con razón
fuente
POJOS
con ciertas convenciones (getter / setter, constructor público sin argumentos, variables privadas) y están en acción (por ejemplo, se utilizan para leer datos por formulario)JAVABEANS
.fuente
En resumen: las similitudes y diferencias son:
Todos los frijoles JAVA son POJO, pero no todos los POJO son frijoles JAVA.
fuente
Has visto las definiciones formales anteriores, por todo lo que valen.
Pero no te obsesiones con las definiciones. Veamos más sobre el sentido de las cosas aquí.
Los JavaBeans se usan en aplicaciones Java empresariales, donde los usuarios acceden frecuentemente a datos y / o código de aplicaciones de forma remota, es decir, desde un servidor (a través de la red web o privada) a través de una red. Por lo tanto, los datos involucrados deben transmitirse en formato serial dentro o fuera de las computadoras de los usuarios, de ahí la necesidad de que los objetos Java EE implementen la interfaz Serializable. Esta gran parte de la naturaleza de JavaBean no es diferente de los objetos de aplicación Java SE cuyos datos se leen o escriben en un sistema de archivos. El uso de clases Java de manera confiable a través de una red desde una gama de combinaciones de máquina / sistema operativo del usuario también exige la adopción de convenciones para su manejo. De ahí el requisito de implementar estas clases como públicas, con atributos privados, un constructor sin argumentos y getters y setters estandarizados.
Las aplicaciones Java EE también utilizarán clases distintas de las que se implementaron como JavaBeans. Estos podrían usarse para procesar datos de entrada u organizar datos de salida, pero no se usarán para objetos transferidos a través de una red. Por lo tanto, las consideraciones anteriores no necesitan aplicarse a ellos, salvo que sean válidos como objetos Java. Estas últimas clases se denominan POJOs - Objetos Java simples y sencillos.
Con todo, podría ver Java Beans como solo objetos Java adaptados para su uso en una red.
Hay una gran cantidad de publicidad, y no una pequeña cantidad de embaucamiento, en el mundo del software desde 1995.
fuente