POJO JavaBean DO BO DTO VO PO SO

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2023年2月6日 (一) 02:35的版本 →‎BO
跳到导航 跳到搜索

DTO vs Request

DTO Request
Data Transfer Object,用于展示层与服务层之间的数据传输对象。

用来封装和接收 HTTP 请求中的参数;

用来封装和接收其他程序请求调用传递过来的参数;

叫法不同,但应该和 DTO 起到一样的作用,请求的入参都通过 XXXRequest 来封装、

大概应该和 DTO 二选一。



VO vs Response

VO Response

View Object,视图对象,用于展示层,把某个指定页面的展示数据封装起来。

用来封装和传递数据到前端(比如 JS 的 HTTP请求调用);

叫法不同,但应该和 VO 起到一样的作用,返回结果都通过 XXXResponse 来封装

大概应该和 VO 二选一。


PO

Persistent Object,持久化对象,和持久层(如数据库)形成对应的映射关系

对应数据表的 Java 对象,属性列表应该和数据表中的字段完全一致。


DO

Domain Object,领域对象,从现实世界中抽象出来的有形或无形的业务实体。


Entity

实体对象由 Entity 承担


SO

Service Object,服务对象。

在典型的分层应用程序体系结构中,有3个不同的层:

  1. 表示/视图层
  2. 服务/业务层
  3. 数据访问/持久层

表示或视图层由负责传入请求接口的所有“Web”或“Rest”类组成;

顾名思义,数据访问或持久层只是一个用于封装数据相关逻辑的层,DAO 和 DTO 模式实际上都位于这一层;

最后,服务层是负责核心业务逻辑的层,因此这是服务对象所在的层。

服务对象(SO)只是一个用于封装业务逻辑的对象。

这个 SO 的一个常见示例是服务类。比如:ItemService


是为了处理包含多个 POJO 对象(即对多个表的数据操作)时,进行事务的管理。

Service 层(其接口的实现类)被注入一个或多个 DAO 对象,以完成有意义的数据操作。

一般,Service 中的一个方法为一个事务,里面调用多个 DAO 对象的方法完成一个业务逻辑上的操作。


BO

Business Object,业务对象。

它是一个包含业务逻辑代码的对象;

BO 几乎就是一个 SO;

BO 和 SO 是 N:1的关系;

SO 中的一个方法可能需要调用多个 BO 的方法才能实现;

BO 存在的意义在于不向 Web 层暴露业务实现细节;



参考资料

https://blog.devgenius.io/dao-dto-po-so-bo-vo-wtf-6673c9dd5437

https://www.bilibili.com/video/BV18L4y1F7PU

https://blog.csdn.net/weixin_43847283/article/details/121876570

https://www.jianshu.com/p/6c440b06cf6d