Java中VO、PO、POJO、BO、DAO、DTO的区别
VO
VO,Value Object 值对象,是ViewObject表现层对象。
其主要对应界面显示的数据对象。对于一个WEB页面,用一个VO对象对应整个界面的值。
PO
Persistant Object 持久对象
例如把数据库表一条记录作为一个对象处理,可以方便的转为其他对象。
POJO
Plain Old Java Object 简单java对象
PO 和VO都应该属于它,可以理解成POJO是VO和PO的父类。
一个POJO持久化后——>PO;
一个POJO传递过程中——>DTO;
一个POJO用作表示层——>VO。
BO
Business Object对象
主要作用是把业务逻辑封装为一个对象,注意,重在业务逻辑。这个对象可以是一个或者多个其他对象。
比如:一个订单,有名称、数目、价格等等。我们可以把名称对应一个PO,数目对应一个PO,价格对应一个PO。
建立一个对应订单的BO对象处理订单,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
DAO
Data Access Object数据访问对象,DAO层
主要用来封装对数据库的访问。它可以把POJO持久化为PO,用PO组装出来VO、DTO。
DTO
Data Transfer Object 数据传输对象
数据传输目标是DAO从DB(数据库)中检索数据。DTO与DAO之间差异是一个以不具有任何行为除了存储和检索的数据。
例如:一张表有10个字段,那么对应的PO就有10个属性(大多数情况下,DTO内的数据来自多个表)。但view层只需显示5个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这5个属性的DTO来传输数据到client,这样也不会暴露server端表的结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。