含义:
(请注意:在实际应用中,这些名称的具体含义和使用方式可能因不同的开发场景而有所不同。基于实际情况,可以根据需要灵活运用。)
-
PO(Persistent Object,持久化对象):PO 对象一般是指与数据库中的表对应的Java对象。 PO 通常是一个纯粹的 Java 对象,它就是一个简单的 Bean,PO 中的属性以及属性类型对应着数据库表格中的字段。在使用 Hibernate、MyBatis 或其他 ORM 工具进行数据持久化时,PO 是 ORM 和数据库之间直接映射的实体,由 ORM 工具负责加载、保存和更新到数据库。
假设我们有一个数据库表格名为User
,并且包含id
、name
和email
三个字段。那么对应的 PO 类(POJO 类)应该长这样:
public class User { private Integer id; private String name; private String email; // 构造函数和 Getter&Setter 略 }
-
POJO(Plain Old Java Object,简单旧 Java 对象):POJO 是一个普通的 Java 对象,没有继承特定类、没有实现特定接口、没有依赖于特定框架,其属性为私有字段,通过 Getter 和 Setter 方法进行访问。POJO 等价于我们通俗理解的 Java Bean,通常用于简化代码结构和实现面向对象的编程思想。POJO 可以被用于各个层次上。
POJO(Plain Old Java Object,简单旧 Java 对象)对应于上面的 PO(User)类,那么具有其简单旧 Java 对象的特征就是:public class User { private Integer id; private String name; private String email; // 构造函数和 Getter&Setter 略 }
-
DTO(Data Transfer Object,数据传输对象):DTO 代表数据传输对象,通常用于在应用的多层之间传输数据。当远程调用一个远程对象时,例如用 RMI 通信,由于这个对象需要在网络上传输,该对象必须是可序列化的,DTO 对象通常是一个可序列化的 Java 对象,包含了需要传递到另一个进程或计算器上的数据以及方法名称对应的参数。DTO 不同于 PO,在传输时需要指定需要传输的属性,而且 DTO 经常用于服务层和表现层之间的数据交互,用于解耦,为系统的负担带来了一定的缓冲。
DTO 通常被用于服务层和表现层之间传输数据。例如,我们需要将数据库中得到的 User 对象转换为传递给前台 UI 层的 DTO 对象:public class UserDTO { private Integer id; private String name; // 构造函数和 Getter&Setter 略 }
-
VO(View Object,视图对象):VO 代表视图对象。在 UI 的前端开发中,VO 通常是将一个或多个业务对象组合成屏幕显示的信息集,作为前端 UI 展示的数据源。VO 通常是一个简单的 Java Bean,封装了前端需要显示的数据信息,同时 VO 也可以与某些具有客户展示或控制作用的属性和方法。
假设我们需要通过前端展示某个用户的详细信息,那么 VO 可以是通过聚合各个对象而构建一个视图对象,例如:public class UserVO { private Integer id; private String name; private String email; private String address; private List<Order> orders; // 构造函数和 Getter&Setter 略 }