JAVA中常见对象概念

在JAVA开发过程中经常接触到的几类对象,有:PO,BO,DTO,VO等。

  • PO:Persistant Object(持久对象)

持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应 PO 的一个(或若干个)属性。可以看成是与数据库中的表相映射的 java 对象。一个 PO 就是对应数据库中某个表中的一条记录,含有多个记录时可以用 PO 的集合来表示。 PO 中应该只含有属性与对属性的基础操作 setter/getter 方法。

  • BO:Business Object(业务对象)

主要作用是把业务关联逻辑封装为一个整体对象,这个对象可以包括一个或多个其它的对象。 通过化零为整来反应各对象之间的业务关联关系,比如:一个订单 BO,同时包含有商品信息、卖家信息、买家信息等等。 我们可以把持久层中的多个商品信息对应一个 PO 集合,卖家信息对应一个 PO ,买家信息对应一个 PO 。 建立一个对应订单的 BO 对象用于处理订单流程,每个 BO 包含这些 PO 信息 。 这样处理业务逻辑时,我们就可以针对 BO 整体去处理。

  • DTO:Data Transfer Object(数据传输对象)

指用于视图层与服务层之间的数据传输对象。原来的设计目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式服务间调用的次数,从而提高分布式调用的性能和降低网络负载。但现在多用于指视图层与服务层之间的数据传递。

  • VO:View Object(视图对象)

视图对象,用于视图层,它的用来封装特定视图层中页面(或组件)所需的数据进行统一封装。

除了以上常见对象外,还可能会接触一些其他类型的对象:

  • DO:Domain Object(领域对象)

从现实世界中抽象出来的有形或无形的业务实体,其与 PO 常见区别体现在前者更关注业务抽象,后者更注重持久化需求,导致其并不总是能够一一对应。例如:在学生与老师的业务抽象时对应 studentDO 和 teacherDO 两个对象,而在关系型数据库中由于其两者间多对多的关联关系,除了有对应的 studentPO 和 teacherPO 还会对应一个记录其两者间关联关系的 studentAndTeacherPO 存在,此时则不含有与之对应的 BO 存在。除此以外,还有可能存在将某些一一对应的业务实体(如:客户和联系信息)合并为一个 PO,此时则存在两个 BO 对应一个 PO 的情况。

  • TO:Transfer Object (数据传输对象)

不同服务之间进行数据传输的对象。

POJO:Plain Ordinary Java Object(简单无规则 java 对象)

传统意义的 JAVA 对象,只含有属性与其对应的 setter/getter 方法。PO,BO,DTO 等都可以看做侧重不同角度和不同状态的 POJO。

猜你喜欢

转载自my.oschina.net/u/1156626/blog/1619925