一. 写在前面
在实际的工程项目开发中,对于模型的划分对于项目管理与规范开发十分重要。
之前也看到很多关于 DTO、VO之类的数据结构。
今天将这些系统的整理一下,以便对于工程项目有更深刻的理解。
二. 多种领域模型
根据集团开发规约,有以下领域模型(数据结构):
[图片上传失败...(image-28e0b9-1631084636239)]
POJO(Plain Ordinary Java Object, 普通Java对象) :这里所谓的普通是指,这些类里面只有 getter/setter/toString 等基本方法。
1. DO(Data Object, 数据对象):
-
DO对象 和数据库中的 表table 是一一对应的。
-
有些地方也叫做POPersisent Object, 持久化对象)。
-
需要注意的是:DO/PO对象是不包括任何操作的。
-
命名规范:如果是一个Student表,那么其对应的DO对象就是 StudentDO。
2. DAO(Data Access Object, 数据访问对象):
- DAO是为了操作数据库而存在的对象
- 其将对数据库的操作封装起来,一般都是 CRUD 等基本的操作。
3. DTO(Data Transfer Object, 数据传输对象)
-
DTO是用来做系统核心层和应用层之间传输数据的对象。
-
DTO最大的特点是,可以根据需要对数据进行截取。
-
与DO相比,DO中的对象是与数据库中记录的对象字段一一对应的。比如Student 的学号、性别、年龄等所有信息。但是DTO可以根据业务需求,只截取学号和性别,满足上层应用层的需求即可。
4. BO(Business Object, 业务对象)
- BO 是将 业务逻辑 封装成为一个对象,包括各种DO,以及对其的数据操作。
- 举一个栗子,Student表 是 StudentDO,Score表 是 ScoreDO,PyisicalData表是 PyisicalDataDO,这三个DO组合起来形成了一个 StudentActionBO。
直观理解一下,就是这里除了拿到DO的数据之外,需要根据自身业务逻辑对数据进行处理,比如这里的多一个 studentAction的评分标准,例如加权,对不同的 DO 数据进行处理。
5. VO(View Object, 视图对象)
- 对应于展示页面的对象。核心就是为了匹配前端页面的展示内容,专门做匹配的对象。
- 举一个栗子,这里DTO返回的时间是 Date时间戳,但是前端需要展示的是xx年xx月xx日,则需要将DTO对象转换成为前端需要的VO。
三. 一个栗子
image.png这是一个学生管理系统的栗子:
-
这里的 DB 层只列举了两个
-
其他层的内容就是这个意思
-
理解一下
网友评论