java中几种常用的对象类型(po,vo,bo,dto)

PO(persistant object)

  1.持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。   2.通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。   3.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

    VO(value object)

  1.值对象 通常用于页面与控制层之间的数据传递,和PO一样也是仅仅包含数据而已。   2.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。   3.精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。

    BO(business object)

  1.业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。   2.比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。

	建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
  3.这样处理业务逻辑时,我们就可以针对BO去处理。

    DTO(Data Transfer Object)

  1.数据传输对象主要用于远程调用等需要大量传输对象的地方。   2.比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,

	没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.
	到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
  3.DTO是服务器端和客户端进行通 信的一个协议格式,合理的DTO设计将会使得服务器和客户端的通信更加顺畅。

通俗理解:

PO:

      persistant object持久对象

      最形象的理解就是一个PO就是数据库中的一条记录。  好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。

   DO:

      个人简单理解就是类似托管的PO,操作DO不会影响数据库的数据。

   DTO:

      数据传输对象。例如前台查询不会返回密码只是返回 姓名、性别、生日,于是我们将信息封装到DTO中进行传输。

   VO:

      value object值对象、view object视图对象。

      主要用于业务层之间的数据传递,属性是根据当前业务的不同而不同的。

      应用场景:获取的DTO数据中性别信息为0和1,但要求:手机上展示为帅哥和美女,而web端显示为男和女。

  FormBean:

      它只是HTML表单的封装,是为了在控制层弱化request中存储数据的作用,将request的get方法转变为对象的存取值。

      如果让FormBean直接到业务层(它本来应该生活在控制层),View和Model就出现了强耦合,如果想改一下view的表示,整个业务逻辑都得改,恐怖的事情啊。

      应用场景:

            假如需要查询Person信息,并返回给前端”  姓名、年龄、是否成年 “。如果将FormBean直接作用与业务层,那么相关联的业务中都会设置这个”是否未成年“的字段,显然这不可取的。如果用VO处理业务那么简单多了,相关联的业务就不会受到影响,只需在FromBean里加一个字段就可以了,然后将VO转为FormBean交给前端。

猜你喜欢

转载自blog.csdn.net/qq_40180411/article/details/82710739
今日推荐