72 votes

Comment créer un POJO ?

Récemment, j'ai commencé à entendre parler des "POJOs" (Plain Old Java Objects). J'ai cherché sur Google, mais je ne comprends toujours pas bien le concept. Est-ce que quelqu'un pourrait me donner une description claire d'un POJO?

Considérons une classe "Personne" avec les variables "id, nom, adresse, salaire" -- comment créerais-je un POJO pour ce scénario? Est-ce que le code ci-dessous est 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;
    }
}

1 votes

Découvrez ma réponse à une question similaire : stackoverflow.com/questions/3392580/…. Cela concerne les POCO (.NET version des POJOS), mais les fondements sont les mêmes.

0 votes

@Tamil peux-tu m'expliquer une fois de plus. à propos de pojo

0 votes

@Poovizhirajan.N, désolé pour ce long retard. J'ai d'une manière ou d'une autre manqué cela.

2voto

Naresh Joshi Points 1531

Selon Martin Fowler

Le terme a été inventé alors que Rebecca Parsons, Josh MacKenzie et moi nous préparions pour une présentation lors d'une conférence en septembre 2000. Dans la présentation, nous soulignions les nombreux avantages d'encoder la logique métier dans des objets Java réguliers plutôt que d'utiliser des Entity Beans. Nous nous demandions pourquoi les gens étaient si opposés à utiliser des objets réguliers dans leurs systèmes et avons conclu que c'était parce que les objets simples manquaient d'un nom sophistiqué. Alors nous leur en avons donné un, et ça a bien pris.

En général, un POJO n'est pas lié à des restrictions et n'importe quel objet Java peut être appelé un POJO mais il y a quelques directives. Un POJO bien défini devrait suivre les directives suivantes.

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

Et selon la spécification 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. Contenir des annotations pré-spécifiées

Cependant, les développeurs et les frameworks décrivent toujours un POJO comme nécessitant l'utilisation d'annotations prédéfinies pour implémenter des fonctionnalités telles que la persistance, la gestion des transactions déclaratives, etc. L'idée est donc que si l'objet était un POJO avant que des annotations ne soient ajoutées, il redeviendrait un POJO si les annotations sont supprimées et peut toujours être considéré comme un POJO.

Un JavaBean est un type spécial de POJO qui est Serializable, a un constructeur sans argument, et permet l'accès aux propriétés en utilisant des méthodes getter et setter qui suivent une convention de nommage simple.

En savoir plus sur Explication d'un Plain Old Java Object (POJO).

0 votes

Mais chaque classe Java étend au moins la classe Object qui n'étend aucune autre classe ? Devrions-nous ajouter ne peut pas étendre d'autres classes sauf Object ou ne peut pas étendre explicitement d'autres classes ?

0 votes

En fait, il ne s'agit pas de règles strictes et nous n'avons pas besoin d'étendre Object car cela se fait par défaut.

1voto

mohit sarsar Points 24

Il existe principalement trois options possibles à des fins de mappage

  1. sérialiser
  2. mappage XML
  3. mappage POJO (Plain Old Java Objects)

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 des classes d'objets de valeur sont créées avec des méthodes getter et setter qui contiendront facilement le contenu.

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

1voto

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 + "]";
    }
}

0 votes

Pourquoi avez-vous utilisé la méthode equals ? Est-ce que POJO est la même chose que les getters et les setters ?

0voto

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

0voto

  1. Fichier-paramètres-plugins-Parcourir les dépôts
  2. Rechercher RoboPOJOGenerator et installer, redémarrer Android Studio
  3. Ouvrir le projet et faire un clic droit sur le package, sélectionner Générer POJO à partir de JSON
  4. Collez le JSON dans la boîte de dialogue et sélectionnez l'option selon vos besoins
  5. Cliquez sur le bouton Générer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X