什么是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 实时双向通信 聊天室、实时通知 基于消息驱动
posted @ 2025-04-12 18:50  不要划水  阅读(246)  评论(0)    收藏  举报