在JAVA开发过程当中常常接触到的几类对象,有:PO,BO,DTO,VO等。java
持久化对象,它跟持久层(一般是关系型数据库)的数据结构造成一一对应的映射关系,若是持久层是关系型数据库,那么,数据表中的每一个字段(或若干个)就对应 PO 的一个(或若干个)属性。能够当作是与数据库中的表相映射的 java 对象。一个 PO 就是对应数据库中某个表中的一条记录,含有多个记录时能够用 PO 的集合来表示。 PO 中应该只含有属性与对属性的基础操做 setter/getter 方法。数据库
主要做用是把业务关联逻辑封装为一个总体对象,这个对象能够包括一个或多个其它的对象。 经过化零为整来反应各对象之间的业务关联关系,好比:一个订单 BO,同时包含有商品信息、卖家信息、买家信息等等。 咱们能够把持久层中的多个商品信息对应一个 PO 集合,卖家信息对应一个 PO ,买家信息对应一个 PO 。 创建一个对应订单的 BO 对象用于处理订单流程,每一个 BO 包含这些 PO 信息 。 这样处理业务逻辑时,咱们就能够针对 BO 总体去处理。网络
指用于视图层与服务层之间的数据传输对象。原来的设计目的是为了EJB的分布式应用提供粗粒度的数据实体,以减小分布式服务间调用的次数,从而提升分布式调用的性能和下降网络负载。但如今多用于指视图层与服务层之间的数据传递。数据结构
视图对象,用于视图层,它的用来封装特定视图层中页面(或组件)所需的数据进行统一封装。分布式
除了以上常见对象外,还可能会接触一些其余类型的对象:性能
从现实世界中抽象出来的有形或无形的业务实体,其与 PO 常见区别体如今前者更关注业务抽象,后者更注重持久化需求,致使其并不老是可以一一对应。例如:在学生与老师的业务抽象时对应 studentDO 和 teacherDO 两个对象,而在关系型数据库中因为其二者间多对多的关联关系,除了有对应的 studentPO 和 teacherPO 还会对应一个记录其二者间关联关系的 studentAndTeacherPO 存在,此时则不含有与之对应的 BO 存在。除此之外,还有可能存在将某些一一对应的业务实体(如:客户和联系信息)合并为一个 PO,此时则存在两个 BO 对应一个 PO 的状况。设计
不一样服务之间进行数据传输的对象。对象
传统意义的 JAVA 对象,只含有属性与其对应的 setter/getter 方法。PO,BO,DTO 等均可以看作侧重不一样角度和不一样状态的 POJO。开发