小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
在日常工作中,我们经常会看到一些缩写,BO、VO、DTO 等,代码中经常会有 BO=>VO、BO=>DTO 等代码,如果我们对这些概念不熟悉的话,势必对我们理解代码产生一定的影响。今天我们来看一下工作中一些常用的业务 Object,并说明一下他们的使用场景。
业务 Object
DAO(Data Access Object:数据访问对象)
在 Java 服务器开发的三层架构中分成了控制层(Controller)、表示层(Service)和数据访问层(DAO)。数据访问层专门负责跟数据库进行数据交互。
分层的主要作用是解耦。具体起来,DAO 层的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个提交获得指定数据的要求。
而 Service 层,则是专注业务逻辑,对于其中需要的数据库操作,都通过 DAO 层去实现。
VO(Value Object/View Object:值对象/表现层对象)
VO 从名字来看主要是展示用的数据。例如网页、APP 的接口。一般可以理解为 JSON。
相比于 DTO,VO 更多的是对业务的解释,VO 会根据业务的需要,选择 DTO 的部分或者全部字段去展示。
BO(Business Object:业务对象)
BO 就是把 业务逻辑 封装为一个对象(业务逻辑这个概念很重要)。这个对象可以包含一个或多个其他对象。
在整个请求过程中,我们构造一个 BO,在之后的过程中,我们都是通过传递 BO 来进行操作,包括 对 DTO、VO 等的转换。
DTO(Data Transfer Object:数据传输对象)
DTO 可以理解为接口之间传输的数据封装。主要用于远程调用等需要大量传输对象的地方。
PO(PerisPeristant Object:持久层对象)
对于 PO 的理解可以是:一个 PO 就是一条数据库记录。在存入数据库的时候,我们会构建一个 PO 对象。
那么 PO 对象和 DTO 对象有什么区别呢?
我们可以这么理解,PO 记录的是数据库一条记录的所有字段,用于插入数据库。DTO 用于取数据库中一条记录的部分字段使用。这样有两个好处:
-
能够提高数据传输的速度(减少了传输字段)
-
能隐藏后端表结构