java中的VO、DTO、PO、BO

PO

persistent object,持久对象。与数据库里表字段一一对应。PO是一些属性,以及set和get方法组成。一般情况下,一个表,对应一个PO。对数据库进行crud操作。

在mybatis、hibernate框架中,都有 PO

VO

view object,或value object,表现层对象。

页面上要展示的数据,可以封装一个VO对象,将所需数据封装进去。
页面表单提交较多数据时,在springmvc框架中,将表单数据直接封装到VO对象中

和PO一样也是包含数据,可用于业务层之间的数据传递,可以和表对应,也可以不对应

DTO

data transfer object:数据传输对象。

一般用于 Controller 和 service 之间传递数据

表里面有十几个字段:id,name,gender(M/F),age,conmpanyId(如001)…

页面需要展示四个字段:name,gender(男/女),age,conmpanyName(如今日头条股份有限公司)。

DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构。

VO、DTO、PO 比较

在ssm这类框架中,PO 一定存在,VO、DTO不一定存在,根据具体需要而定

PO:在简单功能中,一般只需要 PO 即可,PO 传递到Controller中,就充当dto;po传递到页面中,就充当vo

BO

bussiness object,业务对象。封装业务逻辑的 java 对象

把业务逻辑封装为一个 BO 对象。是 VO、DTO 或 PO 的组合

比如投保人是一个 PO,被保险人是一个 PO,险种信息是一个 PO 等等,他们组合起来是第一张保单的 BO。