引言:
做传统项目时一直对对象类型没有太过具体的了解,用时基本也就POJO、DAO、对于传输对象没有太过细的划分。在做分布式架构的项目有一个问题一直困扰着我,对象类型怎么设计,怎么用,用到什么样的程度。如果设计时划分比较清楚有利于项目解耦,但是明显增加了项目的复杂度。
常见Java对象类型如下:
POJO:
全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的属性与表字段一一对应
PO:
全称为:Persistant Object,即持久化对象。可以理解为数据库中的一条数据即一个PO对象,也可以理解为POJO经过持久化后的对象
DTO:
全称为:Data Transfer Object,即数据传输对象。一般用于向数据层外围提供仅需的数据,如查询一个表有50个字段,界面或服务只需要用到其中的某些字段,DTO就包装出去的对象。可用于隐藏数据层字段定义,也可以提高系统性能,减少不必要字段的传输损耗。
DAO:
全称为:Data Access Object,即数据访问对象。就是一般所说的DAO层,用于连接数据库与外层之间的桥梁,并且持久化数据层对象
BO:
全称为:Business Object,即业务对象。一般用在业务层,当业务比较复杂,用到比较多的业务对象时,可用BO类组合封装所有的对象一并传递。
VO:
全称为:Value Object,有的也称为View Object,即值对象或页面对象。一般用于web层向view层封装并提供需要展现的数据
总结:
这些定义在实际使用设计中并不会全部用到,根据不同设计架构定义不同的类对象,形态大致如此,可根据自己项目进行调整。一般各层之间要尽量保持低耦合,不要相互依赖,如web尽量不要引用dao层或服务实现层中的类,在单应用中不会有问题。如果重构成分布式项目,这些对象过度依赖将会是十分让人头疼的问题。最近做的分布式项目我是对象类型分为前端传来的对象为BO、服务之间调用用DTO、返回给前端用VO、与数据库对应分了dao层、表对应的实体为PO。使各个对象各司其职,高度解耦,这样也造成了一个问题,对象转换时需要太多对象之间进行转换。显然如果项目仅仅时快速开发就没必要分那么清楚,如果项目要进行迭代为了后期维护就尽量解耦。