Comment créer un POJO?

Récemment, j’ai commencé à entendre 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 “id, nom, adresse, salaire” – comment créer un POJO pour ce scénario? Le code est-il sous un POJO?

public class Person { //variables People people = new People(); private int id; private Ssortingng name; private Ssortingng address; private int salary; public int getId() { return id; } public Ssortingng getName() { return name; } public Ssortingng 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; } } 

Un POJO est simplement un ancien bean Java avec les ressortingctions supprimées. Les Java Beans doivent répondre aux exigences suivantes:

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

POJO n’impose aucun de ces éléments. C’est juste ce que le nom dit: un object qui comstack sous JDK peut être considéré comme un ancien object Java simple. Aucun serveur d’applications, aucune classe de base, aucune interface à utiliser.

L’acronyme POJO était une réaction contre EJB 2.0, qui nécessitait plusieurs interfaces, classes de base étendues et de nombreuses méthodes pour faire des choses simples. Certaines d’entre elles, dont Rod Johnson et Martin Fowler, se sont opposées à 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”, a écrit Spring, a suffisamment influencé EJB pour que la version 3.1 ressemble énormément à Spring et Hibernate, et en a tiré un joli IPO de VMWare.

Voici un exemple que vous pouvez comprendre:

 public class MyFirstPojo { private Ssortingng name; public static void main(Ssortingng [] args) { for (Ssortingng arg : args) { MyFirstPojo pojo = new MyFirstPojo(arg); // Here's how you create a POJO System.out.println(pojo); } } public MyFirstPojo(Ssortingng name) { this.name = name; } public Ssortingng getName() { return this.name; } public Ssortingng toSsortingng() { return this.name; } } 

POJO: – POJO est un object Java non lié par une ressortingction autre que celles imposées par la spécification de langage Java.

Propriétés de POJO

  1. Toutes les propriétés doivent être des méthodes publiques de définition et de lecture
  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’argument

Exemple de POJO

 public class POJO { private Ssortingng value; public Ssortingng getValue() { return value; } public void setValue(Ssortingng value) { this.value = value; } } 

Un POJO est un object Java Plain Plain .

De l’article de wikipedia j’ai lié à:

En logiciel informatique, POJO est un acronyme pour Plain Old Java Object. Le nom est utilisé pour souligner qu’un object donné est un object Java ordinaire, pas un object spécial, et en particulier pas un Enterprise JavaBean

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

La classe POJO agit comme un bean qui sert à définir et à obtenir la valeur.

 public class Data { private int id; private Ssortingng deptname; private Ssortingng date; private Ssortingng name; private Ssortingng mdate; private Ssortingng mname; public int getId() { return id; } public void setId(int id) { this.id = id; } public Ssortingng getDeptname() { return deptname; } public void setDeptname(Ssortingng deptname) { this.deptname = deptname; } public Ssortingng getDate() { return date; } public void setDate(Ssortingng date) { this.date = date; } public Ssortingng getName() { return name; } public void setName(Ssortingng name) { this.name = name; } public Ssortingng getMdate() { return mdate; } public void setMdate(Ssortingng mdate) { this.mdate = mdate; } public Ssortingng getMname() { return mname; } public void setMname(Ssortingng mname) { this.mname = mname; } } 

Lorsque vous ne faites rien pour que votre classe soit particulièrement conçue pour fonctionner avec un framework donné, un ORM ou un autre système nécessitant une classe particulière, vous avez un object Java simple, ou POJO.

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

Comparez l’ancien POD “Plain Old Data” à une classe C ++ qui ne fait rien qu’une structure C ne pouvait pas faire (plus ou moins, les membres non virtuels qui ne sont pas des destructeurs ou des constructeurs sortingviaux ne l’empêchent pas d’être considéré POD), et le plus récent (et plus directement comparable) POCO “Plain Old CLR Object” dans .NET.

il y a principalement trois options possibles pour la cartographie

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

Lors de l’utilisation des classes pojo, un développeur peut facilement mapper avec la firebase database. Les classes POJO sont créées pour la firebase database et, en même temps, les classes d’objects 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 avec la firebase database, les objects de valeur et les classes POJO sont implémentés.

 import java.io.Serializable; public class Course implements Serializable { protected int courseId; protected Ssortingng courseName; protected Ssortingng courseType; public Course() { courseName = new Ssortingng(); courseType = new Ssortingng(); } public Course(Ssortingng courseName, Ssortingng courseType) { this.courseName = courseName; this.courseType = courseType; } public Course(int courseId, Ssortingng courseName, Ssortingng courseType) { this.courseId = courseId; this.courseName = courseName; this.courseType = courseType; } public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } public Ssortingng getCourseName() { return courseName; } public void setCourseName(Ssortingng courseName) { this.courseName = courseName; } public Ssortingng getCourseType() { return courseType; } public void setCourseType(Ssortingng 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 Ssortingng toSsortingng() { return "Course[" + courseId + "," + courseName + "," + courseType + "]"; } } 

Selon Martin Fowler

Le terme a été inventé pendant que Rebecca Parsons, Josh MacKenzie et moi nous préparions une conférence lors d’une conférence en septembre 2000. Dans cet exposé, nous soulignions les nombreux avantages du codage de la logique métier dans des objects Java classiques plutôt qu’avec Entity Beans. Nous nous sums demandés pourquoi les gens étaient si opposés à l’utilisation d’objects réguliers dans leurs systèmes et nous avons conclu que c’était parce que les objects simples n’avaient pas de nom de fantaisie. Alors on leur en a donné un, et ça fait très bien l’affaire.

En général, un POJO n’est lié à aucune ressortingction et tout object Java peut être appelé 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 comme privée.
  2. Le constructeur par défaut doit être remplacé par une accessibilité publique.
  3. Chaque variable devrait avoir sa méthode Setter-Getter accessible au public.
  4. Généralement, POJO doit remplacer les méthodes equals (), hashCode () et toSsortingng () de Object (mais ce n’est pas obligatoire).
  5. Overriding compare () méthode de l’interface comparable utilisée pour le sorting (préférable mais non obligatoire).

Et selon la spécification de 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écessitant 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. Ainsi, si l’object était un POJO avant l’ajout d’annotations retiré alors il peut toujours être considéré comme un POJO.

Un JavaBean est un type spécial de POJO qui est Serializable, possède un constructeur sans argument et permet d’accéder aux propriétés à l’aide des méthodes getter et setter qui suivent une convention de dénomination simple.

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

 public class UserInfo { Ssortingng LoginId; Ssortingng Password; Ssortingng FirstName; Ssortingng LastName; Ssortingng Email; Ssortingng Mobile; Ssortingng Address; Ssortingng DOB; public Ssortingng getLoginId() { return LoginId; } public void setLoginId(Ssortingng loginId) { LoginId = loginId; } public Ssortingng getPassword() { return Password; } public void setPassword(Ssortingng password) { Password = password; } public Ssortingng getFirstName() { return FirstName; } public void setFirstName(Ssortingng firstName) { FirstName = firstName; } public Ssortingng getLastName() { return LastName; } public void setLastName(Ssortingng lastName) { LastName = lastName; } public Ssortingng getEmail() { return Email; } public void setEmail(Ssortingng email) { Email = email; } public Ssortingng getMobile() { return Mobile; } public void setMobile(Ssortingng mobile) { Mobile = mobile; } public Ssortingng getAddress() { return Address; } public void setAddress(Ssortingng address) { Address = address; } public Ssortingng getDOB() { return DOB; } public void setDOB(Ssortingng DOB) { this.DOB = DOB; } }