Как создать POJO? - PullRequest
       28

Как создать POJO?

64 голосов
/ 20 августа 2010

Недавно я начал слышать о "POJOs" (простые старые объекты Java). Я гуглил это, но все еще не очень хорошо понимаю концепцию. Кто-нибудь может дать мне четкое описание POJO?

Рассмотрим класс «Person» с переменными «id, name, address, salary» - как бы я создал POJO для этого сценария? Код ниже 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;
    }
}

Ответы [ 9 ]

75 голосов
/ 20 августа 2010

POJO - это просто старый Java-бин с удаленными ограничениями.Java Beans должен соответствовать следующим требованиям:

  1. Конструктор по умолчанию без аргументов
  2. Следуйте соглашению Bean-функций getFoo (или isFoo для логических значений) и методов setFoo для изменяемого атрибута с именем foo;не включайте setFoo, если foo является неизменяемым.
  3. Необходимо реализовать java.io.Serializable

POJO не требует ни одного из них.Это как раз то, что говорит название: объект, который компилируется в JDK, может считаться простым старым Java-объектом.Нет сервера приложений, нет базовых классов, нет интерфейсов, необходимых для использования.

Аббревиатура POJO была реакцией против EJB 2.0, которая требовала нескольких интерфейсов, расширенных базовых классов и множества методов для выполнения простых задач.Некоторые люди, в том числе Род Джонсон и Мартин Фаулер, восстали против сложности и искали способ реализации решений масштаба предприятия без необходимости писать EJB.

Мартин Фаулер придумал новую аббревиатуру.

РодДжонсон написал «J2EE Without EJBs», написал Spring, оказал достаточное влияние на EJB, поэтому версия 3.1 очень похожа на Spring и Hibernate, и получил от него приятное IPO от VMWare.

Вот пример, который можно обернутьваша голова вокруг:

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; } 
}
24 голосов
/ 24 января 2014

POJO: - POJO - это объект Java, не связанный какими-либо ограничениями, кроме ограничений, налагаемых спецификацией языка Java.

Свойства POJO

  1. Все свойства должны быть общедоступными для установкии методы получения
  2. Все переменные экземпляра должны быть закрытыми
  3. Не должны расширять заранее заданные классы.
  4. Не должны реализовывать заранее заданные интерфейсы.
  5. Не должно содержать заранее заданных аннотаций.
  6. Может не иметь конструкторов аргументов

Пример POJO

public class POJO {

    private String value;

    public String getValue() {
         return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
4 голосов
/ 11 июня 2013

Класс POJO действует как компонент, который используется для установки и получения значения.

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 голосов
/ 20 августа 2010

POJO - это Простой старый Java-объект .

Из статьи Википедии, на которую я ссылаюсь:

В вычислительном программном обеспечении POJO является аббревиатуройПростой старый объект Java.Имя используется, чтобы подчеркнуть, что данный объект является обычным Java-объектом, а не специальным объектом и, в частности, не Enterprise JavaBean

Ваш класс, по-видимому, уже являетсяPOJO.

2 голосов
/ 20 августа 2010

Если вы ничего не делаете для того, чтобы ваш класс был специально разработан для работы с заданной средой, ORM или другой системой, для которой требуется особый класс, у вас есть простой Java-объект Plain или POJO.

По иронии судьбы, одна из причин придумывания этого термина состоит в том, что люди избегали их в тех случаях, когда они были разумными, и некоторые люди пришли к выводу, что это потому, что у них не было причудливого имени. Иронично, потому что ваш вопрос показывает, что подход сработал.

Сравните старый POD "Plain Old Data" со значением класса C ++, который не делает ничего, что не может сделать структура C (более или менее, не виртуальные члены, которые не являются деструкторами или тривиальными конструкторами, не делают перестаньте считать его POD) и более новым (и более сопоставимым) POCO "Простой старый объект CLR" в .NET.

1 голос
/ 07 августа 2018

Согласно Мартину Фаулеру

Термин был придуман, когда Ребекка Парсонс, Джош МакКензи и я готовились к выступлению на конференции в сентябре 2000 года.мы указывали на множество преимуществ кодирования бизнес-логики в обычные объекты Java, а не с помощью Entity Beans.Мы задались вопросом, почему люди были против использования обычных объектов в своих системах, и пришли к выводу, что это потому, что простым объектам не хватает причудливого имени.Итак, мы дали им один, и он очень хорошо зарекомендовал себя.

Как правило, POJO не связан никакими ограничениями, и любой объект Java можно назвать POJO, но есть некоторые указания.Точно определенный POJO должен следовать приведенным ниже инструкциям.

  1. Каждая переменная в POJO должна быть объявлена ​​как частная.
  2. Конструктор по умолчанию должен быть переопределен с общедоступной доступностью.
  3. У каждой переменной должен быть свой метод Setter-Getter с общедоступной доступностью.
  4. Обычно POJO должен переопределять методы Object (equals (), hashCode () и toString () (но это не обязательно).

И в соответствии со спецификацией языка Java, POJO не должен иметь

  1. Расширение предопределенных классов
  2. Реализация предопределенных интерфейсов
  3. Содержит предопределенные аннотации

Однако разработчики и структуры, описывающие POJO, по-прежнему требуют использования заданных аннотацийреализовать такие функции, как постоянство, декларативное управление транзакциями и т. д. Таким образом, идея заключается в том, что если объект былPOJO перед добавлением каких-либо аннотаций вернется в состояние POJO, если аннотации будут удалены, тогда его все еще можно считать POJO.

JavaBean - это особый вид POJO, который является Сериализуемым, не имеет-argument конструктор и обеспечивает доступ к свойствам с помощью методов получения и установки, которые следуют простому соглашению об именах.

Подробнее о Объясненный старый Java-объект (POJO) Объяснено .

1 голос
/ 30 ноября 2015
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 голос
/ 27 мая 2014

Существует в основном три варианта для отображения:

  1. serialize
  2. Отображение XML
  3. Отображение POJO. (Простые старые объекты Java)

Используя классы pojo, разработчик может легко сопоставлять с базой данных.Классы POJO создаются для базы данных, и в то же время классы объектов-значений создаются с помощью методов получения и установки, которые будут легко хранить содержимое.

Таким образом, для целей сопоставления между Java и базой данных значение -реализованы объекты и классы POJO.

0 голосов
/ 23 ноября 2016
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;
        }
    }
...