dao,dto,vo,po,pojo,bo的区别
1. dao
DAO (Data Access Object) : 数据访问对象
- 主要用来封装对数据库的操作(curd)
- 通过接受Business层的数据,把POJO持久化成PO
2. PO
PO (Persistent Object) : 持久化层对象,他跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或者若干个)就对应PO的一个(或若干个)属性
- 有时也被称为Data对象,对应数据库中的Entity,可以简单的认为一个PO对应数据库中的一条记录
- 在hibernate持久化框架中与insert/update操作密切相关
- PO中不应该包含任何对数据库的操作
3. POJO
POJO (Plain Ordinary Java Object ) 无规则简单java对象, 一个中间对象,可以转化为PO、DTO、VO。
- POJO持久化之后==〉PO
- POJO传输过程中==〉DTO
- POJO用作表示层==〉VO
4. DTO
DTO(Data Transfer Object) : 数据传输对象,这个概念来源J2EE的设计模式,原来的目的是EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
- 在需要跨进程进行远程传播时,他不应该包含业务逻辑
- 比如一张表有100个字段,那么对应的PO就应该有100个属性(大多数情况下,DTO的数据来源于多个表),但是view层只显示10个字段,那么久没有必要把整个PO对象传到client,这时我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端的表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时他的身份就转为VO
5. VO
VO(View Object) : 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。值对象,表现层对象。
- 主要对应页面显示 (web页面/swt, swing界面)的数据对象
- 可以和表对应,也可以不,根据业务的需要
6. BO
BO(Business Objec) : 业务对象,业务对象的主要逻辑是把业务逻辑封装为一个对象。这个对象可以包含一个或多个其他对象。
比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
封装业务逻辑为一个对象(可以包括多个PO,通常需要将BO转化成PO,才能进行数据的持久化,反之,从DB中得到的PO,需要转化成BO才能在业务层使用)。
- 只包含业务对象的属性
- 只包含业务方法
- 两者都包含
简易的关系图: