Comment créer un POJO?


Récemment, j'ai commencé à entendre parler de "POJOs" (Vieux objets Java simples). Je l'ai googlé, mais je ne comprends toujours pas bien le concept. Quelqu'un peut-il me donner une description claire d'un POJO?

Considérons une classe "Personne" avec des variables "id, nom, adresse, salaire" how comment créer un POJO pour ce scénario? Le code ci-dessous est-il 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 est juste un vieux Bean Java simple avec les restrictions supprimées. Les beans Java doivent répondre aux exigences suivantes:

  1. Constructeur sans arg par défaut
  2. Suivez la convention Bean de getFoo (ou isFoo pour les booléens) et les méthodes setFoo pour un attribut mutable nommé foo; laissez le setFoo si foo est immuable.
  3. Doit implémenter java. io. Serializable

POJO ne mandate aucun de ces éléments. C'est juste ce que le nom dit: un objet qui compile sous JDK peut être considéré comme un ancien objet Java. Pas de serveur d'applications, pas de classes de base, pas d'interfaces nécessaires à l'utilisation.

L'acronyme POJO était une réaction contre EJB 2.0, qui nécessitait plusieurs interfaces, des classes de base étendues et beaucoup de méthodes pour faire des choses simples. Certaines personnes, dont Rod Johnson et Martin Fowler, se sont rebellées contre la complexité et ont cherché un moyen de mettre en œuvre des solutions à l'échelle de l'entreprise sans avoir à écrire des EJB.

Martin Fowler a inventé un nouveau acronyme.

Rod Johnson a écrit "J2EE sans EJBs", a écrit Spring, a assez influencé EJB pour que la version 3.1 ressemble beaucoup à Spring et Hibernate, et a obtenu une introduction en bourse douce de VMware.

Voici un exemple que vous pouvez envelopper votre tête:

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 est un objet Java non lié par une restriction autre que celles forcées par la Spécification du langage Java.

Propriétés de POJO

  1. Toutes les propriétés doivent être des méthodes public setter et getter
  2. Toutes les variables d'instance doivent être privées
  3. Ne devrait pas étendre les classes pré-spécifiées.
  4. Ne doit pas implémenter d'interfaces pré-spécifiées.
  5. Ne doit pas contenir d'annotations pré-spécifiées.
  6. Il peut ne pas avoir d'argument constructeurs

Exemple de 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 est un Vieux objet Java ordinaire.

De l'article wikipedia que j'ai lié à:

Dans les logiciels informatiques, POJO est un acronyme pour Plain Old Java Object. Le nom est utilisé pour souligner qu'une donnée object est un objet Java ordinaire, pas un objet spécial, et en particulier pas un Enterprise JavaBean

Votre classe semble déjà être un POJO.

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

La classe POJO agit comme un bean qui est utilisé pour définir et obtenir la valeur.

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

Lorsque vous ne faites rien pour rendre votre classe particulièrement conçue pour fonctionner avec un framework donné, ORM ou un autre système qui a besoin d'un type spécial de classe, vous avez un vieil objet Java, ou POJO.

Ironiquement, l'une des raisons pour lesquelles le terme est inventé est que les gens les évitaient dans les cas où ils étaient sensés et certaines personnes ont conclu que c'était parce qu'ils n'avaient pas de nom de fantaisie. Ironique, parce que votre question démontre que l'approche travaillé.

Comparez l'ancien POD "Plain Old Data" pour signifier une classe C++ qui ne fait rien qu'une structure C ne pourrait pas faire (plus ou moins, les membres non virtuels qui ne sont pas des destructeurs ou des constructeurs triviaux ne l'empêchent pas d'être considéré comme POD), et le POCO plus récent (et plus directement comparable) "Plain Old]}

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

Il y a principalement trois options sont possibles à des fins de mappage

  1. sérialiser
  2. Mappage XML
  3. POJO de cartographie.(Vieux objets Java simples)

Lors de l'utilisation des classes pojo,il est facile pour un développeur de mapper avec la base de données. Les classes POJO sont créées pour la base de données et en même temps les classes value-objects sont créées avec des méthodes getter et setter qui conserveront facilement le contenu.

Donc, dans le but de mapper entre java et la base de données, les objets de valeur et les classes POJO sont implémentés.

 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

Selon Martin Fowler

Le terme a été inventé alors que Rebecca Parsons, Josh MacKenzie et moi nous préparions à une conférence en septembre 2000. Dans la conférence, nous soulignions les nombreux avantages de l'encodage de la logique métier dans des objets java ordinaires plutôt que d'utiliser des Beans d'entité. Nous nous sommes demandés pourquoi les gens étaient si opposés à l'utilisation d'objets réguliers dans leurs systèmes et avons conclu que c'était parce que les objets simples n'avaient pas de nom de fantaisie. Alors nous leur en avons donné un, et il est pris sur très bien.

Généralement, un POJO n'est lié à aucune restriction et tout objet Java peut être appelé un POJO mais il y a quelques directions. Un POJO bien défini doit suivre les instructions ci-dessous.

  1. Chaque variable d'un POJO doit être déclarée comme privée.
  2. Le constructeur par défaut doit être remplacé par public accessibility.
  3. Chaque variable doit avoir sa méthode Setter-Getter avec accessibilité publique.
  4. Généralement POJO devrait remplacer les méthodes equals (), hashCode () et toString () de l'objet (mais ce n'est pas obligatoire).
  5. Remplacer la méthode compare() d'interface comparable utilisée pour le tri (préférable mais non obligatoire).

Et selon la spécification du langage Java, un POJO ne devrait pas avoir à

  1. Étendre les classes pré-spécifiées
  2. Implémenter des interfaces pré-spécifiées
  3. Contient des annotations pré-spécifiées

Cependant, les développeurs et les frameworks décrivent un POJO nécessite toujours l'utilisation d'annotations pré-spécifiées pour implémenter des fonctionnalités telles que la persistance, la gestion déclarative des transactions, etc. L'idée est donc que si l'objet était un POJO avant l'ajout d'annotations, il reviendrait au statut POJO si les annotations sont supprimées, il peut toujours être considéré comme un POJO.

Un JavaBean est un type spécial de POJO qui est sérialisable, a un constructeur sans argument et permet d'accéder aux propriétés en utilisant les méthodes getter et setter qui suivent un convention de nommage simple.

En savoir plus sur Plain Old Java Object (POJO) Expliqué.

 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