如何创建POJO?

时间:2010-08-20 00:05:51

标签: java pojo

最近我开始听说“POJO”(Plain Old Java Objects)。我用Google搜索,但仍然不理解这个概念。谁能给我一个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;
    }
}

10 个答案:

答案 0 :(得分:75)

POJO只是一个简单的旧Java Bean,删除了限制。 Java Bean必须满足以下要求:

  1. 默认无参数构造函数
  2. 遵循getFoo的Bean约定(或booans的isFoo)和setFoo方法,用于名为foo的可变属性;如果foo是不可变的,请不要使用setFoo。
  3. 必须实现java.io.Serializable
  4. POJO不会强制要求任何这些。这正是名称所说的:在JDK下编译的对象可以被视为普通的旧Java对象。没有应用服务器,没有基类,不需要使用接口。

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

    Martin Fowler创造了一个新的缩写词。

    罗德·约翰逊写道“没有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; } 
    }
    

答案 1 :(得分:24)

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

POJO的属性

  1. 所有属性必须是公共setter和getter方法
  2. 所有实例变量都应该是私有的
  3. 不应扩展预先指定的类。
  4. 不应实施预先指定的接口。
  5. 不应包含预先指定的注释。
  6. 它可能没有任何参数构造函数
  7. POJO的例子

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

答案 2 :(得分:4)

POJO是Plain Old Java Object

从我链接的维基百科文章:

  

在计算软件中,POJO是一个   Plain Old Java Object的首字母缩写。该   name用来强调给定的   object是普通的Java Object,而不是   一个特殊的对象,特别是   不是Enterprise JavaBean

您的课程似乎已成为POJO。

答案 3 :(得分:4)

POJO类充当用于设置和获取值的bean。

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 :(得分:2)

如果您没有做任何事情来使您的类特别设计为使用给定的框架,ORM或其他需要特殊类的系统,那么您就拥有了一个普通的旧Java对象或POJO。

具有讽刺意味的是,创造这个词的原因之一是人们在他们理智的情况下避开它们,有些人认为这是因为他们没有一个奇特的名字。讽刺,因为你的问题表明这种方法有效。

比较旧的POD“Plain Old Data”是指一个C ++类,它不会做任何C结构不能做的事情(或多或少,非虚拟成员不是析构函数或琐碎的构造函数不停止它被认为是POD),以及.NET中更新(也更直接可比)的POCO“Plain Old CLR Object”。

答案 5 :(得分:1)

主要有三种选择可用于映射目的

  1. 序列化
  2. XML映射
  3. POJO映射。(普通旧Java对象)
  4. 使用pojo类时,开发人员很容易使用数据库进行映射。 POJO类是为数据库创建的,同时使用getter和setter方法创建值对象类,这些方法可以轻松保存内容。

    因此,为了在java与数据库之间进行映射,实现了value-objects和POJO类。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

根据Martin Fowler

  

这个词是在Rebecca Parsons,Josh MacKenzie和我在2000年9月的一次会议上准备演讲时创造的。在演讲中,我们指出了将业务逻辑编码为常规Java对象而不是使用Entity的许多好处。豆子。我们想知道为什么人们反对在他们的系统中使用常规对象,并得出结论,这是因为简单的对象缺少花哨的名称。因此,我们给了他们一个,非常受欢迎。

通常,POJO不受任何限制,任何Java对象都可以称为POJO,但是有一些指示。定义明确的POJO应该遵循以下指示。

  1. POJO中的每个变量都应声明为私有。
  2. 默认构造函数应具有公共可访问性。
  3. 每个变量都应具有可公开访问的Setter-Getter方法。
  4. 通常,POJO应该重写Object的equals(),hashCode()和toString()方法(但这不是强制性的)。
  5. 用于排序的Comparable接口的重写compare()方法(首选,但不是强制性的)。

并且根据Java语言规范,POJO不必

  1. 扩展预先指定的课程
  2. 实施预定接口
  3. 包含预先指定的注释

但是,开发人员和框架描述的POJO仍然需要使用预先指定的注释来实现诸如持久性,声明性事务管理等功能。因此,如果对象是添加任何注释之前的POJO,则在以下情况下将返回POJO状态:注释被删除,则仍可以视为POJO。

  

JavaBean是一种特殊的POJO,可序列化,具有无参数构造函数,并允许使用遵循简单命名约定的getter和setter方法访问属性。

有关Plain Old Java Object (POJO) Explained的更多信息。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

  1. 文件设置插件浏览存储库
  2. 搜索RoboPOJOGenerator并安装,重新启动Android Studio
  3. 打开项目,然后右键单击要从JSON生成POJO的包并选择
  4. 在对话框中粘贴JSON并根据需要选择选项
  5. 单击“生成”按钮