首先这些对象都应用都是一些单词的简称,也是一种应用思想,故其他语言也可以使用,在 Java 里比较常见这些对象吧。下面来一一解释。
一、POJO(Plain Ordinary Java Object)。
简单而言,就是一个简单的对象,而且没有任何规则约束。有的时候拿 POJO 来泛指用来做传输对象 Java bean
(包括今天要介绍的 DTO 、 VO 、 BO 、 PO 等)也是可以的。
二、DTO(Data Transfer Object)
数据传输对象,单纯用来数据传输的对象。我们有的项目又分InDto
和OutDto
,顾名思义就是输入和输出的Dto 。
三、PO(Persistant Object)
持久对象,可以看成是与数据库中的表相映射的 Java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 不包含业务逻辑和数据逻辑。就是一个Entity
或者说 ModelEntity
。
四、BO(Business Object)
业务对象,我经常使用的一个,它是和业务挂钩的,简单来说,我们每个业务可能需要很多 PO (数据库表)来组成,而我们返回前端页面或者返回给调用方的时候,我们需要组合。而这个时候, BO 就派上用场了,它就是一个对 PO 的组合,也可以就是 PO ,只是出发点是满足业务的传输对象。
五、VO(Value Object)
值对象,其实和 BO 、 DTO 、 PO 差不多,只是更形象化了, VO 更简单,没有任何思想,就是一个传输对象。
六、DAO(Data Access Object)
数据访问对象,通常是和数据层打交道的最后一层,通过 DAO 对数据库做识别操作,最终返回我们想要的数据。通常和我们的 PO 、 BO 等基础类型,如List
、Map
等结合使用