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.

Vastaa

Sähköpostiosoitettasi ei julkaista.