POJO

2025年3月29日 | 阅读 6 分钟

Java 中的 POJO 代表“Plain Old Java Object”(普通 Java 对象)。它是一个普通的 Java 对象,不受任何特殊限制。POJO 文件不需要任何特殊的类路径。它提高了 Java 程序的可读性和可重用性。

POJO 因其易于维护而得到广泛接受。它们易于阅读和编写。POJO 类对属性和方法没有命名约定。它不绑定到任何 Java 框架;任何 Java 程序都可以使用它。

POJO 这个词是由 **Martin Fowler**(一位美国软件开发人员)于 2000 年提出的。它已在 Sun Microsystem 的 EJB 3.0 中提供。

通常,POJO 类包含变量及其 Getter 和 Setter。

POJO 类与 Bean 相似,因为它们都用于定义对象以提高可读性和可重用性。它们之间唯一的区别是 Bean 文件有一些限制,但 POJO 文件没有任何特殊限制。

示例

POJO 类用于定义对象实体。例如,我们可以创建一个 Employee POJO 类来定义其对象。

以下是 Java POJO 类的示例。

Employee.java

上面的 employee 类是一个 employee POJO 类的示例。如果您在 Eclipse 中工作,可以通过右键单击 Java 程序并导航到 **Source-> Generate Getters and Setters** 来轻松生成 Setters 和 Getters。

POJO

右键单击 Java 程序并选择 Generate Getters and Setters。

POJO

现在,单击 Generate 窗口底部的 **Generate** 选项。它将自动生成 setters 和 getters。

POJO 类的属性

POJO 类具有以下属性

  • POJO 类必须是 public 的。
  • 它必须有一个 public 的默认构造函数。
  • 它可能有一个参数化构造函数。
  • 所有对象都必须有一些 public 的 Getters 和 Setters,以便其他 Java 程序可以访问对象值。
  • POJO 类中的对象可以具有任何访问修饰符,例如 private、public、protected。但是,为了提高项目安全性,所有实例变量都应该是 private 的。
  • POJO 类不应继承预定义类。
  • 它不应实现预定义接口。
  • 它不应具有任何预定义的注释。

POJO 类的作用

POJO 类是一个封装业务逻辑的对象类。在 MVC 架构中,Controller 与业务逻辑交互,业务逻辑与 POJO 类通信以访问数据。

下图描绘了 POJO 类的作用。

POJO

如何在 Java 程序中使用 POJO 类?

创建 POJO 类是为了在其他 Java 程序中使用对象。POJO 类的主要优点是,我们不必在其他 Java 程序中每次都创建对象。我们只需通过使用 get() 和 set() 方法即可访问对象。

要从 POJO 类访问对象,请遵循以下步骤

  • 创建 POJO 类对象
  • 使用 set() 方法设置值
  • 使用 get() 方法获取值

例如,在同一包中创建一个 MainClass.java 类文件,并在其中编写以下代码

MainClass.java

输出

Name: Alisha
Id: A001
Salary: 200000.0

从上面的示例中,我们可以看到我们在 MainClass.java 中访问了 POJO 类的属性。

POJO 与 Bean 类相似,因此人们经常混淆它们;让我们看看 POJO 和 Bean 类之间的区别。

Java Bean

Java Bean 类也是一个对象类,它将多个对象封装到一个文件中(Bean 类文件)。POJO 和 Bean 类之间存在一些区别。

Java POJO 和 Bean 概述

  • 所有 Bean 文件都可以是 POJO,但并非所有 POJO 都是 Bean。
  • 所有 Bean 文件都可以实现 Serializable 接口,但并非所有 POJO 都可以实现 Serializable 接口。
  • 为了完全控制字段,两个属性都应该是 private 的。
  • 属性必须有 getters 和 setters 才能在其他 Java 程序中访问它们。
  • Bean 类是 POJO 类的子集。
  • 使用 POJO 没有主要缺点,但使用 Bean 类可能有一些缺点。
  • 当我们想为用户提供完全访问权限并限制我们的成员时,使用 POJO。而当我们想为成员提供部分访问权限时,则使用 Bean。

以下是如何在 Java 程序中使用 POJO 类的示例。

BookDemo.java

输出

Book{title='The Great Gatsby', author='F. Scott Fitzgerald', isbn='9780743273565'}
Book{title='1984', author='George Orwell', isbn='9780451524935'}
Accessing specific property values:
Title of my first book: The Great Gatsby
Author of my second book: George Orwell

以下是 BookDemo 类的分步说明

  1. 创建 Book 实例:使用无参构造函数创建 Book 类的两个实例。
  2. 设置属性:对于每个 Book 实例,调用 setTitle()、setAuthor() 和 setIsbn() 方法来设置书籍的标题、作者和 ISBN。
  3. 打印图书详情:System.out.println 方法通过调用其重写的 toString 方法来打印每本图书的详情。这演示了 toString 方法如何提供一种方便的方式来以结构化格式打印 Book 对象的所有详细信息。
  4. 访问特定属性:作为一个可选步骤,此示例显示了如何使用 getter 方法(getTitle()、getAuthor())来访问 Book 对象的特定属性。在只需要显示或处理图书的某些详细信息的场景中,这可能很有用。

此示例演示了如何在 Java 中使用 POJO 来以直接的面向对象的方式表示和操作数据。它展示了如何在程序中创建对象、设置和获取其属性以及利用其功能。

POJO vs. Bean

POJOBean
在 POJO 中,除了 Java 约定之外,没有特殊限制。它是 POJO 文件的一种特殊类型,除了 Java 约定外,还有一些特殊限制。
与 Bean 相比,它对字段的控制较少。它对字段提供完全保护。
POJO 文件可以实现 Serializable 接口;但是,这不是强制性的。Bean 类应实现 Serializable 接口。
POJO 类可以使用其名称进行访问。Bean 类只能通过 getters 和 setters 访问。
字段可以具有任何访问修饰符,例如 public、private、protected。字段只能具有 private 访问权限。
在 POJO 中,不一定需要无参构造函数;它可能有一个,也可能没有。它必须有一个无参构造函数。
使用 POJO 没有缺点。使用 Bean 的缺点是,默认构造函数和 public setter 可以在对象应该是不可变的时候改变对象的状态。