如何创建一个POJO?

新手上路,请多包涵

最近我开始听说“POJO”(普通旧 Java 对象)。我用谷歌搜索了它,但仍然不太理解这个概念。谁能给我一个 POJO 的清晰描述?

考虑一个带有变量“id、name、address、salary”的类“Person”——我将如何为这个场景创建一个 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;
    }
}

原文由 user405398 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 470
2 个回答

POJO 只是一个普通的、旧的 Java Bean,去掉了限制。 Java Bean 必须满足以下要求:

  1. 默认无参数构造函数
  2. 对于名为 foo 的可变属性,遵循 getFoo(或布尔值的 isFoo)和 setFoo 方法的 Bean 约定;如果 foo 是不可变的,则不要使用 setFoo。
  3. 必须实现 java.io.Serializable

POJO 不强制执行任何这些。顾名思义:在 JDK 下编译的对象可以被认为是 Plain Old Java Object。没有应用程序服务器,没有基类,没有需要使用的接口。

首字母缩略词 POJO 是对 EJB 2.0 的反应,EJB 2.0 需要多个接口、扩展基类和许多方法来完成简单的事情。有些人,其中包括 Rod Johnson 和 Martin Fowler,反对复杂性并寻求一种无需编写 EJB 即可实现企业级解决方案的方法。

Martin Fowler 创造了一个新的首字母缩略词。

Rod Johnson 写了“没有 EJB 的 J2EE”,写了 Spring,对 EJB 的影响足够大,所以 3.1 版看起来非常像 Spring 和 Hibernate,并且从 VMWare 那里获得了不错的 IPO。

这是一个您可以思考的示例:

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

原文由 duffymo 发布,翻译遵循 CC BY-SA 2.5 许可协议

POJO:- POJO 是一个 Java 对象,除了 Java 语言规范强制的限制外,不受任何限制。

POJO 的属性

  1. 所有属性必须是公共的 setter 和 getter 方法
  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;
    }
}

原文由 Md Azaharuddin Ali 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题