Clases POJO
POJO significa Plain Old Java Object. Es un objeto Java ordinario, no sujeto a ninguna restricción especial distinta de las impuestas por la especificación del lenguaje Java y que no requiere ningún classpath. Los POJO se utilizan para aumentar la legibilidad y la reutilización de un programa. Los POJO han ganado la mayor aceptación porque son fáciles de escribir y comprender. Fueron introducidos en EJB 3.0 por Sun microsystems.
Un POJO no debe:
- Ampliar clases preespecificadas, por ejemplo: la clase pública GFG extiende javax.servlet.http.HttpServlet {…} no es una clase POJO.
- Implemente interfaces preespecificadas, por ejemplo: la clase pública Bar implementa javax.ejb.EntityBean {…} no es una clase POJO.
- Contener anotaciones preespecificadas, Ej: @javax.persistence.Entity public class Baz {… } no es una clase POJO.
Los POJO básicamente definen una entidad. Al igual que en su programa, si desea una clase de empleado, puede crear un POJO de la siguiente manera:
Java
// Employee POJO class to represent entity Employee public class Employee { // default field String name; // public field public String id; // private salary private double salary; //arg-constructor to initialize fields public Employee(String name, String id, double salary) { this.name = name; this.id = id; this.salary = salary; } // getter method for name public String getName() { return name; } // getter method for id public String getId() { return id; } // getter method for salary public Double getSalary() { return salary; } }
El ejemplo anterior es un ejemplo bien definido de la clase POJO. Como puede ver, no hay restricción en los modificadores de acceso de los campos. Pueden ser privados, predeterminados, protegidos o públicos. Tampoco es necesario incluir ningún constructor en él.
POJO es un objeto que encapsula la lógica empresarial. La siguiente imagen muestra un ejemplo de trabajo de la clase POJO. Los controladores interactúan con su lógica empresarial, que a su vez interactúa con POJO para acceder a la base de datos. En este ejemplo, una entidad de base de datos está representada por POJO. Este POJO tiene los mismos miembros que la entidad de la base de datos.
Habas de Java
Los frijoles son un tipo especial de Pojos. Hay algunas restricciones para que POJO sea un frijol.
- Todos los JavaBeans son POJO pero no todos los POJO son JavaBeans.
- Serializable, es decir, deberían implementar una interfaz Serializable. Aún así, algunos POJO que no implementan una interfaz Serializable se denominan POJO porque Serializable es una interfaz de marcador y, por lo tanto, no tiene muchas cargas.
- Los campos deben ser privados. Esto es para proporcionar un control completo sobre los campos.
- Los campos deben tener getters o setters o ambos.
- Un constructor sin argumentos debería estar allí en un bean.
- A los campos solo acceden los constructores o los setters getter.
Getters y Setters tienen algunos nombres especiales según el nombre del campo. Por ejemplo, si el nombre del campo es alguna propiedad, su captador será preferentemente:
public "returnType" getSomeProperty() { return someProperty; }
y setter será
public void setSomePRoperty(someProperty) { this.someProperty=someProperty; }
La visibilidad de getters y setters es generalmente pública. Getters y setters proporcionan la restricción completa en los campos. por ejemplo, considere debajo de la propiedad,
Integer age;
Si configura la visibilidad de la edad para el público, entonces cualquier objeto puede usar esto. Suponga que desea que la edad no pueda ser 0. En ese caso, no puede tener el control. Cualquier objeto puede establecerlo en 0. Pero al usar el método setter, usted tiene el control. Puede tener una condición en su método setter. De manera similar, para el método getter, si desea que si su edad es 0, debería devolver un valor nulo, puede lograrlo utilizando el método getter como en el siguiente ejemplo:
Java
// Java program to illustrate JavaBeans class Bean { // private field property private Integer property; Bean() { // No-arg constructor } // setter method for property public void setProperty(Integer property) { if (property == 0) { // if property is 0 return return; } this.property=property; } // getter method for property public Integer getProperty() { if (property == 0) { // if property is 0 return null return null; } return property; } } // Class to test above bean public class GFG { public static void main(String[] args) { Bean bean = new Bean(); bean.setProperty(0); System.out.println("After setting to 0: " + bean.getProperty()); bean.setProperty(5); System.out.println("After setting to valid" + " value: " + bean.getProperty()); } }
Producción:-
After setting to 0: null After setting to valid value: 5
POJO contra el frijol de Java
POJO |
haba de java |
---|---|
No tiene restricciones especiales más allá de las impuestas por el lenguaje Java. | Es un POJO especial que tiene algunas restricciones. |
No proporciona mucho control sobre los miembros. | Proporciona un control completo sobre los miembros. |
Puede implementar una interfaz serializable. | Debe implementar una interfaz serializable. |
Se puede acceder a los campos por sus nombres. | Solo los getters y setters acceden a los campos. |
Los campos pueden tener cualquier visibilidad. | Los campos solo tienen visibilidad privada. |
Puede/no puede haber un constructor sin argumentos. | Debe tener un constructor sin argumentos. |
Se usa cuando no desea restringir a sus miembros y otorgar al usuario acceso completo a su entidad. | Se utiliza cuando desea proporcionar al usuario su entidad, pero solo una parte de su entidad. |
Conclusión
Las clases POJO y Beans se utilizan para definir objetos Java para aumentar su legibilidad y reutilización. Los POJO no tienen otras restricciones, mientras que los frijoles son POJO especiales con algunas restricciones.
Este artículo es una contribución de Vishal Garg . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA