1. 前言
在开发的过程中,我们不可避免的使用到了各种POJO类,一个优秀、整洁、易维护的代码,少不了对这些相似POJO类的区别,以下整理了多数POJO类后缀的定义
2. POJO类
1. VO类(view object/value object)视图对象、展示层对象
与前端的交互类,一般在controller层,做为接口的入参接收类、出参返回类
2. PO(persistent object)持久对象
与数据库的表形成一一对应映射关系的类,有时候也会用Entity类来代替
特点:只存储数据,不包含数据操作
3. DTO类(Data Transfer Object)数据传输对象
在服务间调用的类
VO和PO类需要通过DTO类才能实现数据转化
4. BO类(bussines object)业务层对象
在服务内部使用的业务对象,在服务层中,由DTO转成BO然后进行业务处理后,转成DTO返回到接口层
对于复杂的业务场景会用到这个BO类,一般情况下,感觉DTO类就够用了
5. DO类(Domain Object)领域对象
从现实世界中抽象出来的有形或无形的业务实体 没怎么用到
3. 优缺点
1. 优点
- 接口入参干净:当数据库字段比较复杂的情况,一部分字段又不需要前端传,VO和PO字段名分开,可以单独设置接口入参类,简单干净,而且通过swagger可以清楚地知道这个接口需要什么参数
- 隐藏表字段结构:如果我们不像让别人知道表字段名,VO和PO的字段叫法可以设置不一样,只需要在转化类的时候赋值一下就OK了
- 易维护:代码可读性变强
2. 缺点
- 开发初期需要大量的convert方法,工作量变大