Java POJO osztály – Plain Old Java Object
Mostanáig a normál objektumokat beszéltük meg és használtuk Java-ban. Ebben a cikkben az objektumok egy speciális típusát, a POJO-t fogjuk megismerni. A POJO a Plain Old Java Object rövidítése, amely a Java program újrafelhasználhatóságának és olvashatóságának növelésére szolgál. Megbeszéljük, hogyan használjuk a Java POJO osztályt, és miért fontos megtanulni.
Keeping you updated with latest technology trends, Join TechVidvan on Telegram
What is POJO class in Java?
POJO a Plain Old Java Object rövidítése, amely egy normál objektum, amelyet nem kötnek speciális korlátozásokhoz. Csak a Java nyelvi specifikációk bizonyos korlátozásokkal vannak megkötve. Egyszerűen a POJO tiszta adatszerkezetként működik, amely getter és setter metódusokkal rendelkezik. A POJO objektumok nem igényelnek classpath-ot. A POJO a legelterjedtebb osztály a Java-ban, mert nagyon könnyű megírni és megérteni. A Sun Microsystems az EJB 3.0-ban vezette be a POJO osztályt a Java-ban.
A POJO osztály felülírhat bizonyos metódusokat, mint például a Serializable vagy az Object osztályból is.
A POJO nem teheti a következőket:
1. Egy POJO osztály nem bővítheti ki az olyan előre definiált osztályokat, mint a HttpServlet, Arrays, Calendar stb. Ha például azt írjuk, hogy public class MyClass extends javax.servlet.http.HttpServlet, akkor a MyClass osztály nem tekinthető POJO osztálynak.
2. Egy POJO osztály nem tartalmazhat előre meghatározott jegyzeteket. Például a @Retention(RetentionPolicy.RUNTIME) public class MyClass{..} nem POJO osztály.
3. Egy POJO osztály nem implementálhat előre meghatározott interfészeket. Például public class Test implements javax.ejb.EntityBean { …} nem tekinthető POJO osztálynak.
Most, implementáljuk a POJO osztályt Javában.
Példa a POJO osztályra
A POJO osztály általában egy entitást definiál. Ha például egy Intern osztályt szeretnénk, akkor a következőképpen hozhatunk létre egy POJO osztályt:
// Intern POJO class to represent entity Internpublic class Intern { // default field String name; // public field public String role; // private field private double salary; //arg-constructor to initialize fields public Intern(String name, String role, double salary) { this.name = name; this.role = role; this.salary = salary; } // getter method for name public String getName() { return name; } // getter method for role public String getRole() { return role; } // getter method for salary public Double getSalary() { return salary; }}
A fenti példa jól mutatja egy jól definiált POJO osztályt. Ebben a példában látható, hogy a mezők hozzáférési módosítói nincsenek korlátozva. Bármilyen hozzáférési módosítóval rendelkezhetnek, mint például public, private, default vagy protected. Azt is megjegyezhetjük, hogy a POJO osztályban nincs szükség konstruktor hozzáadására.
A POJO osztályt bármilyen Java kódban használhatjuk. A POJO osztály nem kötődik a keretrendszerhez. De nem tudjuk ezt a POJO osztályt valós konvenciókkal implementálni, hogy megváltoztassuk az osztály állapotát.
A POJO osztály úgy viselkedik, mint egy objektum, amely magában foglalja az alkalmazás üzleti logikáját. A következő ábra egy POJO osztály működését mutatja be. Az ábrán jól látható, hogy a vezérlő kölcsönhatásba lép az üzleti logikával. Az üzleti logika viszont kölcsönhatásba lép a POJO osztállyal az adatbázishoz való hozzáférés érdekében.
Mi a Java Beans?
A Java Beans a POJO-k egy speciális típusa. De a Java babok POJO-vá válásának van néhány korlátozása. Ezek a korlátozások a következők:
1. Minden JavaBean lehet POJO, de minden POJO osztály nem lehet Java Beans.
2. A Java Beans-nek implementálnia kell a Serializable interfészt.
3. A Java Beans minden mezőjének privátnak kell lennie, hogy teljes kontrollt biztosítson a mezők felett.
4. Minden mezőnek vagy getter vagy setter metódussal kell rendelkeznie, vagy mindkettővel.
5. A Java Beans-nek vagy getter vagy setter metódussal kell rendelkeznie. Egy babban kell lennie egy no-arg konstruktornak.
6. A mezőket csak konstruktorral vagy getter setterekkel érhetjük el.
Kód a JavaBeans megértéséhez
package com.techvidvan.pojoclass;import java.io. * ;class Student implements java.io.Serializable { private int id; private String name; public Student() {} public void setId(int id) { this.id = id; } public int getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; }}public class Test { public static void main(String args) { Student s = new Student(); //object is created s.setName("Rita"); //setting value to the object System.out.println("Name of the student is: " + s.getName()); }}
Kimenet:
A diák neve: Rita
Java POJO osztály vs Java Bean
Most, hogy mind a POJO osztályt, mind a Java babokat tárgyaltuk, beszéljünk a köztük lévő különbségekről:
POJO | JAVA BEAN |
A POJO osztályra nincs más korlátozás, mint amit a Java specifikációs nyelv kikényszerít. | A Java Bean egy speciális POJO osztály, amelynek van néhány korlátozása. |
A POJO osztály nem sok ellenőrzést biztosít a mezők felett. | A Java Bean teljes ellenőrzést biztosít a tagok felett. |
A POJO osztály implementálhat vagy nem implementálhat Serializable interfészt. | A Java Bean-nek implementálnia kell egy Serializable interfészt. |
A mezőkhöz közvetlenül a nevük alapján férhetünk hozzá | A Java Bean-en belül a mezőkhöz csak getter és setter metódusokkal férhetünk hozzá. |
A mezőkhöz bármilyen hozzáférési módosító lehet. | A Java Beanben lévő mezőknek csak privátnak kell lenniük. |
A POJO osztályban lehet vagy nem lehet argumentum nélküli konstruktor. | A Java Beans-ben kell lennie egy no-arg konstruktornak. |
A POJO osztályt akkor használjuk, ha nem kell korlátozásokat tenni a mezőkre, és teljes hozzáférés lehet a mezők felett. | A Java Beans-t akkor használjuk, ha nem akarunk teljes hozzáférést adni az entitásokhoz. |
Következtetés
Megtanultuk a POJO osztályt a Java-ban, ami növeli a kód olvashatóságát. Megbeszéltük a valós entitásokat is. A JavaBeans szinte teljesen hasonló a Java POJO osztályhoz, de van néhány különbség is, amelyeket ebben a cikkben tárgyaltunk. Reméljük, hogy talán megértette a POJO osztály működését és megvalósítását Javában.