Java POJO
Definición
POJO→Plain Old Java Object
Características
-
Clases simplesno dependen de unframework -
Objetono sujeto a ninguna restricción especial -
Objeto POJOes unainstanciade unaclasequeno extiende ni implementa nada -
Surge como
oposiciónal estándaresEJBanteriores al3.0 -
No sigue ningún de los principales modelos , convecciones o
frameworkdeobjetosdeJava -
ObjetodeJavano está sujeto a ninguna otra restricción que no este impuesta por la especificación dellenguaje Java
POJO no debería ser
1.Extender extend de preespecificadas clases
// NO EXTIENDE
public class Foo extends javax.servlet.http.HttpServlet { ... }
2.Implementar interface preespecificadas
// NO EXTIENDE
public class Foo implements javax.ejb.EntityBean { ... }
3.Contener anotaciones preespecificadas
// NO EXTIENDE
@javax.persistence.Entity public class Baz { ... }
-
Por cuestiones de dificultades técnicas del
softwareyframeworkcompatibles conPOJOrequieren el uso deanotaciones preespecificadaspara funciones como lapersistenciafuncionen-
objeto ←→
"Clase"- Fuera de los
POJOseagregaran anotacionesy volvería al estado dePOJO, si se eliminan lasanotacionestodavía se puede considerar unPOJO
- Fuera de los
-
Objetosbásicos sigue siendoPOJOen el sentido no tienen características especialescomo la interfaz implementadaque convierte unobjetoJava especializado
-
POJO - JavaBean
-
Un
JavaBeanes unPOJOque esserializable -
Tiene un
constructor sin argumentosy permite elaccesoa laspropiedadesutilizandométodos getterysetterque siguen una convención de nomenclatura simple.- Se pueden hacer
referencias declarativas simplesa las propiedades deJavaBeans arbitrarios
- Se pueden hacer
-
El código que usa una
referencia declarativade estetipono tiene que saber nada sobre el tipo debeany elbeanse puede usar con muchosframeworksin que estosframeworktengan que saber el tipo exacto delbean -
La especificación de
JavaBeanssi se implementa por completo rompe ligeramente elmodelo POJOya que laclasedebe implementar lainterfaz Serializablepara ser un verdaderoJavaBean -
Muchas
clases POJOque todavía se llamanJavaBeansno cumplen este requisito -
Dado que
Serializablees unainterfaz de marcador (sin método)esto supone que no es una gran carga -
Ejemplo de un
componente JavaServer Faces(JSF)que tiene unenlace bidireccionala lapropiedaddePOJO
<h:inputText value="#{MyBean.someProperty}"/>
Ejemplo 1 - Clase POJO
- Si se define una
clase Personacon susatributos privadosy sus correspondientesgettersysetters públicosunainstanciade estasimple clasees unobjeto POJO
/**
* Concepto de POJO
*/
public class Persona {
public int edad;
public double peso;
public String nombre;
public Persona() {
}
/**
* @return the edad
*/
public int getEdad() {
return edad;
}
/**
* @param edad the edad to set
*/
public void setEdad(int edad) {
this.edad = edad;
}
/**
* @return the peso
*/
public double getPeso() {
return peso;
}
/**
* @param peso the peso to set
*/
public void setPeso(double peso) {
this.peso = peso;
}
/**
* @return the nombre
*/
public String getNombre() {
return nombre;
}
/**
* @param nombre the nombre to set
*/
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Ejemplo 2 - Clase POJO
public class MyBean {
private String someProperty;
public String getSomeProperty() {
return someProperty;
}
public void setSomeProperty(String someProperty) {
this.someProperty = someProperty;
}
}
Conceptos
-
Los diseños que usan
POJOhan surgido ensistemasquebrindana losPOJOunafuncionalidad completautilizada en losframeworks -
POJOse centra en lalógica empresarialy no depende de losframeworks -
Los
frameworksde programaciónorientados a aspectos (AOP)agregan forma transparente lapersistencia,transaccionesyseguridad -
Spring: primera implementaciones del modelo conPOJO -
Ejemplode unbean EJBque es unPOJO-
(EJB)→Enterprise JavaBeans -
(JPA)→Java Persistence APIincluyendoHibernate -
CDI→(Contexts and Dependency Injection)para la plataformaJavaEE
-
-
Bean EJBes funcional y demuestra cómoEJB3aprovecha el modeloPOJO- Ejemplo
public class HelloWorldService {
public String sayHello() {
return "Hello, world!";
}
}
-
Beanno necesita extender ningunaclase EJBniimplementarningunainterfaz EJB; tampoco necesita contener anotacionesEJB- El programador declara un ````archivo XML externo
los serviciosEJBdeben agregarse albean``
- El programador declara un ````archivo XML externo
<enterprise-beans>
<session>
<ejb-name>helloWorld</ejb-name>
<ejb-class>com.example.HelloWorldService</ejb-class>
<session-type>stateless</session-type>
</session>
</enterprise-beans>
Otros Usos
JSONse utilizanPOJOparaserializarlosobjetosen formatoJSON, con bibliotecas comoGson
Deja un comentario