您的位置:首页 > 其它

PO/POJO/BO/DTO/VO的区别

2011-05-12 10:04 204 查看

PO
:persistent object
持久对象

1
.有时也被称为Data
对象,对应数据库中的entity
,可以简单认为一个PO
对应数据库中的一条记录。

2
.在hibernate
持久化框架中与insert/delet
操作密切相关。

3
.PO
中不应该包含任何对数据库的操作。

POJO
:plain ordinary java object
无规则简单java
对象

一个中间对象,可以转化为PO
、DTO
、VO


1
.POJO
持久化之后==
〉PO

(在运行期,由Hibernate
中的cglib
动态把POJO
转换为PO
,PO
相对于POJO
会增加一些用来管理数据库entity
状态的属性和方法。PO
对于programmer
来说完全透明,由于是运行期生成PO
,所以可以支持增量编译,增量调试。)

2
.POJO
传输过程中==
〉DTO

3
.POJO
用作表示层==
〉VO

PO
和VO
都应该属于它。

BO
:business object
业务对象

封装业务逻辑为一个对象(可以包括多个PO
,通常需要将BO
转化成PO
,才能进行数据的持久化,反之,从DB
中得到的PO
,需要转化成BO
才能在业务层使用)。

关于BO
主要有三种概念

1
、只包含业务对象的属性;

2
、只包含业务方法;

3
、两者都包含。

在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要。

VO
:value object
值对象 / view object
表现层对象

1
.主要对应页面显示(web
页面/swt
、swing
界面)的数据对象。

2
.可以和表对应,也可以不,这根据业务的需要。

注 :在struts
中,用ActionForm
做VO
,需要做一个转换,因为PO
是面向对象的,而ActionForm
是和view
对应的,要将几个PO
要显示的属性合成一个ActionForm
,可以使用BeanUtils
的copy
方法。

DTO
(TO
) :Data Transfer Object
数据传输对象

1
.用在需要跨进程或远程传输时,它不应该包含业务逻辑。

2
.比如一张表有100
个字段,那么对应的PO
就有100
个属性(大多数情况下,DTO
内的数据来自多个表)。但view
层只需显示10
个字段,没有必要把整个PO
对象传递到client
,这时我们就可以用只有这10
个属性的DTO
来传输数 据到client
,这样也不会暴露server
端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO


DAO
:data access object
数据访问对象

1
.主要用来封装对DB
的访问(CRUD
操作)。

2
.通过接收Business
层的数据,把POJO
持久化为PO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: