什么是AO、BO、DO、DAO、DTO、Domain、Entity、Mapper、PO、POJO、QO、Query、Req、Resp、RPC、VO、WebSocket
什么是AO、BO、DO、DAO、DTO、Domain、Entity、Mapper、PO、POJO、QO、Query、Req、Resp、RPC、VO、WebSocket
1. AO(Application Object,应用对象)
-
用途:协调多个业务对象或服务,处理跨业务域的复杂流程(如订单支付、用户注册)。
-
特点:位于应用层,负责流程编排,不直接处理业务逻辑。
2. BO(Business Object,业务对象)
-
用途:封装核心业务逻辑(如订单计算、库存扣减)。
-
特点:包含业务规则和状态管理。
3. DO(Domain Object,领域对象)
-
用途:在领域驱动设计(DDD)中表示业务领域核心概念(如用户、订单)。
-
特点:包含数据和业务行为,与持久化无关。
4. DAO(Data Access Object,数据访问对象)
-
用途:封装数据库操作(CRUD),隔离数据库细节。
-
特点:直接操作 PO(持久化对象)。
5. DTO(Data Transfer Object,数据传输对象)
-
用途:在层间或服务间传输数据(如 Controller → Service)。
-
特点:纯数据结构,无业务逻辑。
6. Domain(领域模型)
-
用途:DDD 中的核心模型,包含实体(Entity)、值对象(Value Object)、聚合根(Aggregate Root)等。
-
特点:聚焦业务语义,与数据库无关。
7. Entity(实体)
-
用途:具有唯一标识(ID)的业务对象(如用户),常与数据库表映射。
-
特点:通过 ID 区分实例,可能包含业务逻辑。
8. Mapper(映射器)
- 用途:在不同对象类型间转换数据。
9. PO(Persistent Object,持久化对象)
-
用途:直接映射数据库表结构(如 JPA/Hibernate 的
@Entity)。 -
特点:字段与表列一一对应。
10. POJO(Plain Old Java Object,简单Java对象)
-
用途:泛指不依赖框架的普通 Java 对象。
-
特点:无强制继承或注解,灵活通用。
11. QO(Query Object,查询对象)
-
用途:封装复杂查询条件(如分页、排序)。
-
特点:解耦 DAO 层的查询参数。
12. Query(查询参数)
- 用途:同 QO,表示查询条件(如
UserQuery)。
13. Req/Resp(请求/响应对象)
- 用途:专用于 API 接口的输入(Req)和输出(Resp)。
14. RPC(Remote Procedure Call,远程过程调用)
- 用途:跨服务或跨进程通信的协议规范。
15. VO(Value Object / View Object)
-
用途:
- 值对象:不可变的业务概念(如
Money)。 - 视图对象:前端展示数据聚合。
- 值对象:不可变的业务概念(如
16. WebSocket
-
用途:双向实时通信协议的消息对象(如聊天消息)。
-
特点:定义消息格式(JSON/二进制)。
关键对比表
| 类型 | 核心用途 | 典型场景 | 特点 |
|---|---|---|---|
| DTO | 跨层/跨服务数据传输 | API 请求/响应 | 无逻辑,纯数据容器 |
| VO | 前端展示 | 页面数据聚合 | 适配展示需求 |
| BO | 封装业务规则 | 订单计算、库存管理 | 包含业务逻辑 |
| Entity | 持久化+业务实体 | 数据库映射的领域对象 | 有唯一标识(ID) |
| PO | 直接映射数据库表 | JPA/Hibernate 实体 | 与表结构严格对应 |
| RPC | 跨进程通信协议 | 微服务间调用 | 定义请求/响应格式 |
| WebSocket | 实时双向通信 | 聊天室、实时通知 | 基于消息驱动 |
本文来自博客园,作者:不要划水,转载请注明原文链接:https://www.cnblogs.com/shui-notes/p/18822436
浙公网安备 33010602011771号