Come creare un POJO?


Recentemente ho iniziato a sentire parlare di "POJO" (semplici vecchi oggetti Java). L'ho cercato su Google, ma ancora non capisco bene il concetto. Qualcuno può darmi una chiara descrizione di un POJO?

Considera una classe "Persona" con variabili "id, nome, indirizzo, stipendio" how come potrei creare un POJO per questo scenario? Il codice qui sotto è un POJO?

public class Person {
    //variables
    People people = new People();
    private int id;
    private String name;
    private String address;
    private int salary;


    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public int getSalary() {
        return salary;
    }

    public void setId() {
        this.id = id;
    }

    public void setName() {
        this.name = name;
    }

    public void setAddress() {
        this.address = address;
    }

    public void setSalary() {
        this.salary = salary;
    }
}
Author: RAnders00, 2010-08-20

9 answers

Un POJO è solo un semplice, vecchio Bean Java con le restrizioni rimosse. I bean Java devono soddisfare i seguenti requisiti:

  1. Costruttore no-arg predefinito
  2. Segui la convenzione Bean dei metodi getFoo (o isFoo per i booleani) e setFoo per un attributo mutabile chiamato foo; lascia fuori setFoo se foo è immutabile.
  3. Deve implementare java.io.Serializable

POJO non ha mandato nessuno di questi. È proprio quello che dice il nome: un oggetto che compila sotto JDK può essere considerato un semplice vecchio oggetto Java. Nessun server di app, nessuna classe base, nessuna interfaccia richiesta da utilizzare.

L'acronimo POJO era una reazione contro EJB 2.0, che richiedeva diverse interfacce, classi base estese e molti metodi solo per fare cose semplici. Alcune persone, tra cui Rod Johnson e Martin Fowler, si sono ribellate alla complessità e hanno cercato un modo per implementare soluzioni su scala aziendale senza dover scrivere EJB.

Martin Fowler ha coniato un nuovo acronimo.

Rod Johnson ha scritto "J2EE senza EJB", ha scritto Spring, ha influenzato abbastanza EJB così la versione 3.1 assomiglia molto a Spring e Hibernate, e ha ottenuto una dolce IPO da VMware.

Ecco un esempio che si può avvolgere la testa intorno:

public class MyFirstPojo
{
    private String name;

    public static void main(String [] args)
    {
       for (String arg : args)
       {
          MyFirstPojo pojo = new MyFirstPojo(arg);  // Here's how you create a POJO
          System.out.println(pojo); 
       }
    }

    public MyFirstPojo(String name)
    {    
        this.name = name;
    }

    public String getName() { return this.name; } 

    public String toString() { return this.name; } 
}
 71
Author: duffymo, 2010-08-20 01:05:47

POJO:- POJO è un oggetto Java non vincolato da alcuna restrizione diversa da quelle forzate dalla specifica del linguaggio Java.

Proprietà di POJO

  1. Tutte le proprietà devono essere metodi setter e getter pubblici
  2. Tutte le variabili di istanza devono essere private
  3. Non dovrebbe estendere le classi prespecificate.
  4. Non deve implementare interfacce prespecificate.
  5. Non deve contenere annotazioni prespecificate.
  6. Potrebbe non avere alcun argomento costruttori

Esempio di POJO

public class POJO {

    private String value;

    public String getValue() {
         return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
 24
Author: Md Azaharuddin Ali, 2017-07-12 22:27:07

Un POJO è un Semplice Vecchio oggetto Java.

Dall'articolo di wikipedia che ho collegato a:

Nel software di calcolo, POJO è un acronimo di Plain Old Java Object. Il nome è usato per sottolineare che un dato object è un oggetto Java ordinario, non un oggetto speciale, e in particolare non un JavaBean aziendale

La tua classe sembra essere già un POJO.

 4
Author: Blair Conrad, 2010-08-20 00:06:35

POJO classe agisce come un bean che viene utilizzato per impostare e ottenere il valore.

public class Data
{


private int id;
    private String deptname;
    private String date;
    private String name;
    private String mdate;
    private String mname;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDeptname() {
        return deptname;
    }

    public void setDeptname(String deptname) {
        this.deptname = deptname;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMdate() {
        return mdate;
    }

    public void setMdate(String mdate) {
        this.mdate = mdate;
    }

    public String getMname() {
        return mname;
    }

    public void setMname(String mname) {
        this.mname = mname;
    }
}
 4
Author: Subodh, 2016-06-13 10:54:31

Quando non stai facendo nulla per rendere la tua classe particolarmente progettata per funzionare con un dato framework, ORM o altro sistema che ha bisogno di un tipo speciale di classe, hai un semplice vecchio oggetto Java o POJO.

Ironicamente, uno dei motivi per coniare il termine è che le persone li stavano evitando nei casi in cui erano ragionevoli e alcune persone hanno concluso che questo era perché non avevano un nome di fantasia. Ironico, perché la tua domanda dimostra che l'approccio lavorare.

Confronta il vecchio POD "Plain Old Data" per indicare una classe C++ che non fa nulla che una struttura C non possa fare (più o meno, membri non virtuali che non sono distruttori o costruttori banali non impediscono che venga considerato POD), e il più recente (e più direttamente paragonabile) POCO "Plain Old CLR Object" in .NET.

 2
Author: Jon Hanna, 2010-08-20 00:11:50

Ci sono principalmente tre opzioni sono possibili per scopo di mappatura

  1. serializza
  2. Mappatura XML
  3. Mappatura di POJO.(Plain vecchi oggetti Java)

Durante l'utilizzo delle classi pojo,è facile per uno sviluppatore mappare con il database. Le classi POJO vengono create per il database e allo stesso tempo le classi value-objects vengono create con metodi getter e setter che manterranno facilmente il contenuto.

Quindi, allo scopo di mappare tra java e database, vengono implementati oggetti di valore e classi POJO.

 1
Author: mohit sarsar, 2014-05-27 12:11:05
import java.io.Serializable;

public class Course implements Serializable {

    protected int courseId;
    protected String courseName;
    protected String courseType;

    public Course() {
        courseName = new String();
        courseType = new String();
    }

    public Course(String courseName, String courseType) {
        this.courseName = courseName;
        this.courseType = courseType;
    }

    public Course(int courseId, String courseName, String courseType) {
        this.courseId = courseId;
        this.courseName = courseName;
        this.courseType = courseType;
    }

    public int getCourseId() {
        return courseId;
    }

    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getCourseType() {
        return courseType;
    }

    public void setCourseType(String courseType) {
        this.courseType = courseType;
    }

    @Override
    public int hashCode() {
        return courseId;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj != null || obj instanceof Course) {
            Course c = (Course) obj;
            if (courseId == c.courseId && courseName.equals(c.courseName)
                    && courseType.equals(c.courseType))
                return true;
        }
        return false;
    }

    @Override
    public String toString() {
        return "Course[" + courseId + "," + courseName + "," + courseType + "]";
    }
}
 1
Author: Abdullah Sarfaraz, 2017-06-15 03:36:26

Secondo Martin Fowler

Il termine è stato coniato mentre Rebecca Parsons, Josh MacKenzie ed io stavamo preparando un discorso ad una conferenza nel settembre 2000. Nel discorso, abbiamo sottolineato i numerosi vantaggi della codifica della logica di business in oggetti java regolari piuttosto che utilizzare i bean di entità. Ci siamo chiesti perché le persone fossero così contrarie all'uso di oggetti regolari nei loro sistemi e abbiamo concluso che era perché gli oggetti semplici mancavano di un nome di fantasia. Così abbiamo dato loro uno, e ha preso piede molto bene.

Generalmente, un POJO non è legato ad alcuna restrizione e qualsiasi oggetto Java può essere chiamato POJO ma ci sono alcune direzioni. Un POJO ben definito dovrebbe seguire le istruzioni riportate di seguito.

  1. Ogni variabile in un POJO deve essere dichiarata come privata.
  2. Il costruttore predefinito deve essere sovrascritto con l'accessibilità pubblica.
  3. Ogni variabile dovrebbe avere il suo metodo Setter-Getter con accessibilità pubblica.
  4. Generalmente POJO dovrebbe override equals (), hashCode() e toString () metodi di Oggetto (ma non è obbligatorio).
  5. Overriding compare() metodo di interfaccia comparabile utilizzato per l'ordinamento (preferibile ma non obbligatorio).

E secondo le specifiche del linguaggio Java, un POJO non dovrebbe avere

  1. Estendere le classi pre-specificate
  2. Implementa interfacce predefinite
  3. Contiene annotazioni predefinite

Tuttavia, gli sviluppatori e i framework descrivono un POJO richiede ancora l'uso di annotazioni prespecificate per implementare funzionalità come persistenza, gestione delle transazioni dichiarative ecc. Quindi l'idea è che se l'oggetto fosse un POJO prima che venissero aggiunte annotazioni tornerebbe allo stato di POJO se le annotazioni venissero rimosse, allora può ancora essere considerato un POJO.

Un JavaBean è un tipo speciale di POJO che è serializzabile, ha un costruttore senza argomenti e consente l'accesso alle proprietà utilizzando i metodi getter e setter che seguono un convenzione di denominazione semplice.

Per saperne di più su Plain Old Java Object (POJO) Explained.

 1
Author: Naresh Joshi, 2018-08-07 09:53:05
public class UserInfo {
        String LoginId;
        String Password;
        String FirstName;
        String LastName;
        String Email;
        String Mobile;
        String Address;
        String DOB;

        public String getLoginId() {
            return LoginId;
        }

        public void setLoginId(String loginId) {
            LoginId = loginId;
        }

        public String getPassword() {
            return Password;
        }

        public void setPassword(String password) {
            Password = password;
        }

        public String getFirstName() {
            return FirstName;
        }

        public void setFirstName(String firstName) {
            FirstName = firstName;
        }

        public String getLastName() {
            return LastName;
        }

        public void setLastName(String lastName) {
            LastName = lastName;
        }

        public String getEmail() {
            return Email;
        }

        public void setEmail(String email) {
            Email = email;
        }

        public String getMobile() {
            return Mobile;
        }

        public void setMobile(String mobile) {
            Mobile = mobile;
        }

        public String getAddress() {
            return Address;
        }

        public void setAddress(String address) {
            Address = address;
        }

        public String getDOB() {
            return DOB;
        }

        public void setDOB(String DOB) {
            this.DOB = DOB;
        }
    }
 0
Author: Gowtham Subramaniam, 2016-11-23 06:09:47