数据类是Java中专用于封装和传递数据、不含复杂业务逻辑的简单对象,如DTO、VO、PO等;其字段私有、提供getter/setter、常实现Serializable、重写基础方法,强调结构清晰与序列化能力。

数据类(Data Class)在 Java 中通常指专门用于封装数据、不包含复杂业务逻辑的简单对象,也常被称为“数据载体对象”或“DTO(Data Transfer Object)”、“VO(View Object)”、“PO(Persistent Object)”等,核心作用是承载和传递数据。
数据类的核心特征
它符合面向对象中“封装”的基本思想,但弱化行为,强调结构清晰、可读性强、易于序列化和传输:
- 字段通常为 private,配合 public 的 getter/setter 方法(Lombok 可简化)
- 一般不重写复杂逻辑,避免在其中做校验、计算或调用服务
- 常实现 Serializable 接口,便于网络传输或持久化
- 构造方法简洁,常见无参构造 + 全参构造,或使用 Builder 模式
- 重写 toString()、equals() 和 hashCode()(Lombok 的 @Data 可一键生成)
常见数据类类型及用途
根据所处层级和用途不同,命名和职责略有区分:
- PO(Persistent Object):与数据库表一一映射,用于 ORM 框架(如 MyBatis、JPA)操作实体
- DTO(Data Transfer Object):用于跨层(如 Controller → Service)或跨系统传输,常做字段裁剪或聚合
- VO(View Object):专为前端展示定制,字段名、格式、嵌套结构更贴合 UI 需求
- BO(Business Object):虽带“业务”,但在多数项目中仍属轻量数据载体,偶含简单计算逻辑
一个典型的 Java 数据类示例
以用户信息 DTO 为例(使用 Lombok 简化):
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
立即学习“Java免费学习笔记(深入)”;
@Data
public class UserDto implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String username;
private String email;
private LocalDateTime createTime;
}
这个类没有业务方法,只负责安全、明确地表达一组相关数据。调用方通过 getter 获取值,框架可通过 setter 或反射完成赋值,适合 JSON 转换(如 Jackson)、数据库映射或 RPC 参数传递。
本质上,数据类不是语法概念,而是约定俗成的设计角色——它让代码职责分离更清晰:行为交给 Service,数据交给 DTO/VO/PO。不复杂但容易忽略。









