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

  • Post author:
  • Post category:其他



感谢

http://holdbelief.iteye.com/



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



版权声明:本文为maomaoyu3211原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。