感谢
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
。