最近我开始听说“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;
}
}
答案 0 :(得分:75)
POJO只是一个简单的旧Java Bean,删除了限制。 Java Bean必须满足以下要求:
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的属性
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)
主要有三种选择可用于映射目的
使用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)
这个词是在Rebecca Parsons,Josh MacKenzie和我在2000年9月的一次会议上准备演讲时创造的。在演讲中,我们指出了将业务逻辑编码为常规Java对象而不是使用Entity的许多好处。豆子。我们想知道为什么人们反对在他们的系统中使用常规对象,并得出结论,这是因为简单的对象缺少花哨的名称。因此,我们给了他们一个,非常受欢迎。
通常,POJO不受任何限制,任何Java对象都可以称为POJO,但是有一些指示。定义明确的POJO应该遵循以下指示。
并且根据Java语言规范,POJO不必
但是,开发人员和框架描述的POJO仍然需要使用预先指定的注释来实现诸如持久性,声明性事务管理等功能。因此,如果对象是添加任何注释之前的POJO,则在以下情况下将返回POJO状态:注释被删除,则仍可以视为POJO。
JavaBean是一种特殊的POJO,可序列化,具有无参数构造函数,并允许使用遵循简单命名约定的getter和setter方法访问属性。
答案 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)