Plain Old Java Object El nombre se utiliza para enfatizar que un objeto dado es un objeto Java ordinario, no un objeto especial como los definidos por el marco EJB 2.
class A {}
clase B se extiende/implementa C {}
Nota: B es no POJO cuando C es una especie de distribuye clase marco o IFC. p. javax.servlet.http.HttpServlet, javax.ejb.EntityBean o J2EE extn y no serializable/comparable. Dado que serializable/comparable son válidos para POJO.
Aquí A es un objeto simple que es independiente. B es un Obj especial ya que B está extendiendo/implementando C. Entonces el objeto B obtiene un significado más de C y B es restrictivo para seguir las reglas de C. y B es estrechamente acoplado con marco distribuido. Por lo tanto, el objeto B no es POJO desde su definición.
El código que utiliza la referencia de objeto de clase A no tiene que saber nada sobre el tipo de él, y se puede utilizar con muchos marcos.
Por lo tanto, un POJO no debería tener que 1) ampliar las clases preespecificadas y 2) Implementar las interfaces preespecificadas.
JavaBean es un ejemplo de POJO que es serializable, tiene un constructor sin argumentos, y permite el acceso a las propiedades utilizando los métodos getter y setter que siguen una simple convención de nomenclatura.
POJO se centra exclusivamente en la lógica empresarial y no tiene dependencias en los marcos (empresariales). Significa que tiene el código para la lógica de negocios, pero cómo se crea esta instancia, a qué servicio (EJB ..) pertenece este objeto y cuáles son sus características especiales (Stateful/Stateless) que tiene serán decididas por los marcos mediante el uso de recursos externos archivo xml
Ejemplo 1: JAXB es el servicio para representar el objeto java como XML; Estos objetos java son simples y se presentan con getters y setters de constructor por defecto.
Ejemplo 2: Hibernate donde se usará la clase java simple para representar una tabla. las columnas serán sus instancias.
Ejemplo 3: servicios REST. En los servicios REST tendremos Service Layer y Dao Layer para realizar algunas operaciones sobre DB. Así que Dao tendrá consultas y operaciones específicas del proveedor. Service Layer será responsable de llamar a la capa DAO para realizar operaciones DB. Crear o actualizar la API (métodos) de DAO será tomar POJO como argumentos, actualizar esos POJO e insertar/actualizar en DB. Estos POJO (clase Java) solo tendrán estados (variables de instancia) de cada columna y sus getters y setters.
En la práctica, algunas personas consideran que las anotaciones son elegantes, mientras que consideran que XML es detallado, feo y difícil de mantener, mientras que otras encuentran que las anotaciones contaminan el modelo POJO. Por lo tanto, como una alternativa a XML, muchos marcos (por ejemplo Spring, EJB y JPA) permiten anotaciones a utilizarse en lugar o además de XML:
Ventajas:
desacoplar el código de la aplicación de los marcos de infraestructura es uno de los muchos beneficios de usar POJOs. El uso de POJOs a prueba la lógica de negocios de su aplicación desvinculando los marcos de infraestructura volátiles y en constante evolución. Actualizar a una nueva versión o cambiar a un marco diferente se vuelve más fácil y menos arriesgado. Los POJO también facilitan las pruebas, lo que simplifica y acelera el desarrollo. Su lógica de negocio será más clara y sencilla, ya que no se enreda con el código de infraestructura
Referencias: wikisource2
Buena pregunta, Parece que hay muchas variaciones en lo que realmente es un POJO. Uso el término casi a diario y no estoy seguro de lo que significa exactamente ahora que lo pienso. +1 –
Simplemente no lo confundas con un C++ POD. –