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

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

Рассмотрим класс «Человек» с переменными «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;
    }
}
66
задан RAnders00 30 March 2016 в 12:24
поделиться

3 ответа

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

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

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

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

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

Род Джонсон написал «J2EE без EJB», написал 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; } 
}
76
ответ дан 24 November 2019 в 15:02
поделиться

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

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

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

2
ответ дан 24 November 2019 в 15:02
поделиться

POJO - это Plain Old Java Object.

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

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

Ваш класс, похоже, уже является POJO.

5
ответ дан 24 November 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: