Java POJO-luokka – Tavallinen vanha Java-objekti
Tähän asti olemme keskustelleet ja käyttäneet tavallisia objekteja Javassa. Tässä artikkelissa opettelemme erityyppisen objektin POJO. POJO on lyhenne sanoista Plain Old Java Object, jota käytetään Java-ohjelman uudelleenkäytettävyyden ja luettavuuden lisäämiseen. Keskustelemme siitä, miten Java POJO-luokkaa käytetään ja miksi sen oppiminen on tärkeää.
Pidetään sinut ajan tasalla uusimmista teknologiatrendeistä, Liity TechVidvaniin Telegramissa
Mikä on POJO-luokka Javassa?
POJO on lyhenne englanninkielisistä sanoista Plain Old Java Object (suomeksi ”yksinkertainen vanha Java-objekti”), joka tarkoittaa tavallista objektia, jota ei ole sidottu erityisillä rajoituksilla. Ne on sidottu vain joillakin Java-kielen spesifikaatioiden rajoituksilla. Yksinkertaisesti POJO toimii puhtaana tietorakenteena, jolla on getter- ja setter-metodit. POJO-objektit eivät vaadi mitään luokkapolkua. POJO on laajimmin käytetty luokka Javassa, koska se on erittäin helppo kirjoittaa ja ymmärtää. Sun Microsystems otti POJO-luokan käyttöön Javassa EJB 3.0:ssa.
POJO-luokka voi ohittaa tiettyjä metodeja kuten Serializable tai myös Object-luokasta.
POJO-luokka ei saa tehdä seuraavia asioita:
1. POJO-luokka ei saa laajentaa valmiita luokkia, kuten HttpServlet, Arrays, Calendar jne. Jos esimerkiksi kirjoitamme, public class MyClass extends javax.servlet.http.HttpServlet, niin luokkaa MyClass ei voida pitää POJO-luokkana.
2. POJO-luokka ei saa sisältää ennalta määriteltyjä huomautuksia. Esimerkiksi @Retention(RetentionPolicy.RUNTIME) public class MyClass{..} ei ole POJO-luokka.
3. POJO-luokka ei voi toteuttaa ennalta määriteltyjä rajapintoja. Esimerkiksi public class Test implements javax.ejb.EntityBean { …} ei voida pitää POJO-luokkana.
Toteutetaan nyt POJO-luokka Javassa.
Esimerkki POJO-luokasta
POJO-luokka määrittelee yleensä olion. Jos esimerkiksi haluat Intern-luokan, voit luoda POJO-luokan seuraavasti:
// 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; }}
Yllä oleva esimerkki osoittaa selvästi hyvin määritellyn POJO-luokan. Tässä esimerkissä näet, että kenttien käyttöoikeusmuuttujia ei ole rajoitettu. Niillä voi olla mitä tahansa käyttöoikeusmuunnoksia, kuten public, private, default tai protected. Voit myös huomata, että POJO-luokassa ei tarvitse lisätä mitään konstruktoria.
Voidaan käyttää POJO-luokkaa missä tahansa Java-koodissa. POJO-luokka ei ole sidottu kehykseen. Mutta emme voi toteuttaa tätä POJO-luokkaa millään todellisilla konventioilla luokan tilan muuttamiseksi.
POJO-luokka käyttäytyy kuin objekti, joka sisältää sovelluksen liiketoimintalogiikan. Seuraavassa kuvassa on esitetty POJO-luokan toiminta. Kuvasta näkyy selvästi, että ohjain on vuorovaikutuksessa liiketoimintalogiikan kanssa. Liiketoimintalogiikka puolestaan on vuorovaikutuksessa POJO-luokan kanssa saadakseen pääsyn tietokantaan.
Mitä ovat Java-pavut?
Java-pavut ovat POJO:iden erityinen tyyppi. Mutta Java-pavuilla on joitakin rajoituksia tulla POJO:ksi. Nämä rajoitukset ovat seuraavat:
1. Kaikki JavaPavut voivat olla POJO:ita, mutta kaikki POJO-luokat eivät voi olla JavaPapuja.
2. JavaPapujen tulee toteuttaa Serializable-rajapinta.
3. Kaikkien JavaPapujen kenttien tulee olla yksityisiä (private) kenttien täydellisen hallinnan tarjoamiseksi.
4. Kaikilla kentillä tulee olla joko getter- tai setter-metodit, tai molempia.
5. Kaikilla kentillä tulee olla joko getter- tai setter-metodit, tai molemmat. Beanissa pitää olla no-arg-konstruktori.
6. Kenttiin pääsee käsiksi vain konstruktorin tai getter-asettajien avulla.
Koodi JavaBeansin ymmärtämiseen
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()); }}
Tulos:
Opiskelijan nimi on: Rita
Java POJO-luokka vs. Java Bean
Nyt kun olemme käsitelleet sekä POJO-luokkaa että Java-papuja, keskustellaan niiden eroista:
POJO | JAVA BEAN |
POJO-luokalla ei ole mitään muita kuin Javan spesifikaatiokielen pakottamia rajoituksia. | Java Bean on erityinen POJO-luokka, jolla on joitakin rajoituksia. |
POJO-luokka ei tarjoa paljon kontrollia kenttiin. | Java Bean tarjoaa täydellisen kontrollin jäseniin. |
POJO-luokka voi toteuttaa tai olla toteuttamatta Serializable-liitännäisen rajapinnan. | Java Beanin on toteutettava Serializable-liitäntä. |
Voidaan käyttää kenttiä suoraan niiden nimien perusteella | Voidaan käyttää kenttiä Java Beanissa vain getters- ja setters-metodeilla. |
Kentillä voi olla mikä tahansa käyttöoikeuden muokkaaja. | Javapavuissa olevat kentät saavat olla vain yksityisiä. |
POJO-luokassa voi olla tai ei voi olla no-arg-konstruktori. | Javapavuissa on oltava no-arg-konstruktori. |
Käytämme POJO-luokkaa silloin, kun kentille ei tarvitse asettaa rajoituksia ja kenttiin voi olla täydellinen pääsy. | Käytämme Java Beans -luokkaa silloin, kun emme halua antaa täydellistä pääsyä olioihin. |
Johtopäätös
Oppasimme Java-luokassa POJO-luokan, joka parantaa koodin luettavuutta. Keskustelimme myös todellisista olioista. JavaBeans on lähes samanlainen kuin Javan POJO-luokka, mutta siinä on myös joitakin eroja, joita käsittelimme tässä artikkelissa. Toivomme, että olet ehkä ymmärtänyt POJO-luokan toiminnan ja toteutuksen Javassa.