Třída Java POJO – Plain Old Java Object
Dosud jsme v Javě probírali a používali běžné objekty. V tomto článku se seznámíme se speciálním typem objektu POJO. POJO je zkratka pro Plain Old Java Object, která slouží ke zvýšení znovupoužitelnosti a čitelnosti programu v jazyce Java. Probereme, jak se třída POJO v Javě používá a proč je důležité se ji naučit.
Sledujte nejnovější technologické trendy, připojte se k TechVidvanu na Telegramu
Co je to třída POJO v Javě?
POJO je zkratka pro Plain Old Java Object, což je normální objekt, který není svázán zvláštními omezeními. Jsou pouze svázány s některými omezeními specifikace jazyka Java. Jednoduše řečeno, POJO funguje jako čistá datová struktura, která má metody getter a setter. Objekty POJO nevyžadují žádnou cestu třídy. Třída POJO je v Javě nejpoužívanější, protože je velmi snadná na zápis a pochopení. Společnost Sun Microsystems zavedla třídu POJO v jazyce Java ve verzi EJB 3.0.
Třída POJO může přepisovat některé metody, například Serializable, nebo také ze třídy Object.
Třída POJO nesmí dělat následující:
1. Třída POJO nesmí rozšiřovat předdefinované třídy, jako jsou HttpServlet, Arrays, Calendar atd. Například pokud napíšeme: public class MyClass extends javax.servlet.http.HttpServlet, pak třídu MyClass nelze považovat za třídu POJO.
2. Třída POJO nesmí obsahovat předdefinované anotace. Například @Retention(RetentionPolicy.RUNTIME) public class MyClass{..} není třída POJO.
3. Třída POJO nemůže implementovat předdefinovaná rozhraní. Například public class Test implements javax.ejb.EntityBean { …} nelze považovat za třídu POJO.
Nyní implementujme třídu POJO v Javě.
Příklad třídy POJO
Třída POJO obecně definuje entitu. Chcete-li například třídu Intern, pak můžete vytvořit třídu POJO takto:
// 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; }}
Výše uvedený příklad jasně ukazuje dobře definovanou třídu POJO. V tomto příkladu můžete vidět, že přístupové modifikátory polí nejsou omezeny. Mohou mít libovolné modifikátory přístupu, například public, private, default nebo protected. Můžete si také všimnout, že ve třídě POJO není třeba přidávat žádný konstruktor.
Třídu POJO můžeme použít v libovolném kódu jazyka Java. Třída POJO není vázána na framework. Nemůžeme však tuto třídu POJO implementovat pomocí žádných skutečných konvencí, abychom mohli měnit stav třídy.
Třída POJO se chová jako objekt, který obsahuje obchodní logiku aplikace. Následující obrázek ukazuje fungování třídy POJO. Z obrázku je jasně vidět, že kontrolér komunikuje s obchodní logikou. Obchodní logika zase komunikuje s třídou POJO, aby získala přístup k databázi.
Co jsou Java Beans?
Java Beans jsou speciálním typem POJO. Existují však určitá omezení, aby se Java beans mohly stát POJO. Tato omezení jsou následující:
1. Všechny JavaBeans mohou být POJO, ale všechny třídy POJO nemohou být Java Beans.
2. Java Beans by měly implementovat rozhraní Serializable.
3. Všechna pole Java Beans by měla být soukromá, aby byla zajištěna úplná kontrola nad poli.
4. Všechna pole by měla mít buď metody getter, nebo setter, nebo obě.
5. Java Beans by měla být soukromá, aby byla zajištěna úplná kontrola nad poli.
6. Java Beans by měla být soukromá, aby byla zajištěna úplná kontrola nad poli. V beanu musí být konstruktor bez argumentů.
6. K polím můžeme přistupovat pouze pomocí konstruktoru nebo getter setterů.
Kód pro pochopení JavaBeans
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()); }}
Výstup:
Jméno studenta je: Rita
Java POJO třída vs Java Bean
Teď, když jsme probrali POJO třídu i Java Bean, probereme rozdíly mezi nimi:
POJO | JAVA BEAN |
Pro POJO třídu neexistují žádná jiná omezení než ta, která jsou vynucena specifikací jazyka Java. | Java Bean je speciální třída POJO, která má některá omezení. |
Třída POJO neposkytuje velkou kontrolu nad poli. | Java Bean poskytuje úplnou kontrolu nad členy. |
Třída POJO může, ale nemusí implementovat rozhraní Serializable. | Třída Java Bean musí implementovat rozhraní Serializable. |
Přímo můžeme přistupovat k polím podle jejich názvů | K polím uvnitř Java Beanu můžeme přistupovat pouze pomocí metod getters a setters. |
Pro pole může existovat některý z modifikátorů přístupu. | Pole v Java Beanu musí být pouze privátní. |
Ve třídě POJO může, ale nemusí existovat bezpříznakový konstruktor. | V Java Beans musí být no-arg konstruktor. |
Třídu POJO používáme tehdy, když není třeba klást na pole omezení a nad poli může být úplný přístup. | Třídu Java Beans používáme, když nechceme dávat úplný přístup k entitám. |
Závěr
Poznali jsme třídu POJO v Javě, která zvyšuje čitelnost kódu. Probrali jsme také reálné entity. JavaBeans je téměř podobná třídě POJO v Javě, ale má také některé rozdíly, které jsme probrali v tomto článku. Doufáme, že jste snad pochopili fungování a implementaci třídy POJO v jazyce Java.
.