web-dev-qa-db-fra.com

Comment créer un POJO?

Récemment, j'ai commencé à parler de "POJO" (Plain Old Java Objects). 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 "identifiant, nom, adresse, salaire" - 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;
    }
}
62
user405398

Un POJO est simplement un vieux Java Bean avec les restrictions supprimées. Java Beans doit répondre aux exigences suivantes: 

  1. Constructeur sans argument 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; quitte le setFoo si foo est immuable.
  3. Doit implémenter Java.io.Serializable

POJO ne commande aucun de ceux-ci. C'est exactement ce que dit le nom: un objet compilé sous JDK peut être considéré comme un simple objet Java. Pas de serveur d'application, pas de classes de base, pas d'interfaces à utiliser. 

L'acronyme POJO était une réaction contre EJB 2.0, qui nécessitait plusieurs interfaces, des classes de base étendues et de nombreuses méthodes pour effectuer des tâches simples. Certaines personnes, parmi lesquelles 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 nouvel acronyme.

Rod Johnson a écrit "J2EE Without EJBs", écrit Spring, a suffisamment influencé EJB pour que la version 3.1 ressemble beaucoup à Spring et Hibernate et ait obtenu une introduction en bourse de VMWare.

Voici un exemple que vous pouvez comprendre:

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; } 
}
73
duffymo

POJO: - POJO est un objet Java non lié par une restriction autre que celles imposées par la spécification du langage Java.

Propriétés de POJO

  1. Toutes les propriétés doivent être des méthodes de définition et d'acquisition publiques 
  2. Toutes les variables d'instance doivent être privées 
  3. Ne devrait pas étendre les classes pré-spécifiées.
  4. Ne devrait pas implémenter des interfaces pré-spécifiées. 
  5. Ne devrait pas contenir d’annotations pré-spécifiées. 
  6. Il ne peut avoir aucun constructeur d'arguments

Exemple de POJO

public class POJO {

    private String value;

    public String getValue() {
         return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
24
Md Azaharuddin Ali

Un POJO est un Plain Old Java Object .

De l'article de Wikipédia, j'ai lié à:

En logiciel informatique, POJO est un Acronyme de Plain Old Java Object. Le nom est utilisé pour souligner le fait que objet est un objet Java ordinaire, pas un objet spécial, et en particulier pas un Enterprise JavaBean

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

4
Blair Conrad

La classe POJO agit comme un bean 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
Subodh

Lorsque vous ne faites rien pour rendre votre classe particulièrement conçue pour fonctionner avec un framework, un ORM ou un autre système nécessitant un type de classe particulier, vous avez un objet Plain Old Java, ou POJO.

Paradoxalement, l’une des raisons pour lesquelles le terme a été inventé est que les gens les évitaient dans les cas où ils étaient sensés et certains ont conclu que c’était parce qu’ils n’avaient pas un nom fantaisiste. Ironique, parce que votre question démontre que l'approche a fonctionné.

Comparez l'ancien POD "Plain Old Data" pour désigner une classe C++ qui ne fait rien d'une structure C impossible (plus ou moins, les membres non virtuels qui ne sont ni des destructeurs ni des constructeurs triviaux n'empêchent pas son existence considéré comme POD), et le plus récent (et plus directement comparable) POCO "Plain Old CLR Object" dans .NET.

2
Jon Hanna
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
Abdullah Sarfaraz

Selon Martin Fowler

Le terme a été inventé alors que Rebecca Parsons, Josh MacKenzie et moi nous préparions pour une conférence lors d’une conférence en septembre 2000. Lors de la conférence, nous avons souligné les nombreux avantages de l’encodage de la logique métier dans des objets Java classiques plutôt que d’utiliser Entity Beans. Nous nous sommes demandés pourquoi les gens étaient si opposés à utiliser des objets ordinaires dans leurs systèmes et avons conclu que c'était parce que les objets simples n'avaient pas un nom sophistiqué. Nous leur en avons donc donné un et cela a très bien fonctionné.

En règle générale, un POJO n'est lié à aucune restriction et tout objet Java peut être appelé un POJO, mais il existe certaines directions. Un POJO bien défini doit suivre les instructions ci-dessous.

  1. Chaque variable d'un POJO doit être déclarée privée.
  2. Le constructeur par défaut doit être remplacé par un accès public.
  3. Chaque variable doit avoir sa méthode Setter-Getter avec accessibilité publique.
  4. Généralement, POJO doit surcharger les méthodes Object de equals (), hashCode () et toString () (mais ce n'est pas obligatoire).
  5. Substitution de la méthode compare () de l’interface Comparable utilisée pour le tri (Préférable mais non obligatoire).

Et selon les spécifications du langage Java, un POJO ne devrait pas avoir à

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

Toutefois, les développeurs et les cadres décrivant un POJO nécessitent 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. retiré, il peut toujours être considéré comme un POJO.

Un JavaBean est un type spécial de POJO, Serializable, doté d'un constructeur sans argument et permettant l'accès aux propriétés à l'aide de méthodes getter et setter respectant une convention de dénomination simple.

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

1
Naresh Joshi

il y a principalement trois options possibles pour la cartographie

  1. sérialiser
  2. Mappage XML
  3. Mappage POJO. (Objets Java standard simples)

Lorsqu’il utilise les 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 d’objets sont créées à l’aide de méthodes getter et setter permettant de contenir facilement le contenu.

Ainsi, dans le but de mapper entre Java et une base de données, les objets de valeur et les classes POJO sont implémentés.

1
mohit sarsar
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