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。
