PO、VO、DTO、POJO以及JavaBean介绍

不管是实际开发还是过程中还是阅读各类技术书籍,PO/VO/DTO/POJO以及JavaBean出现的频率都很高,可是经常我们还是傻傻分不清楚。因此有必要对它们各自的含义以及相互间的区别有一个清晰的认识和理解。


PO / ENTITY

persistent object持久对象
1. 有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。
2. 在hibernate持久化框架中与insert/delet操作密切相关。
3. PO中不应该包含任何对数据库的操作。

VO

value object 值对象 / view object表现层对象
1. 主要对应页面显示(web页面/swt、swing界面)的数据对象。
2. 可以和表对应,也可以不,这根据业务的需要。

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

DTO (TO)

Data Transfer Object数据传输对象

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

POJO

plain ordinary java object用这个名字用来强调它是一个普通java对象,而不是一个特殊的对象

一个中间对象,可以转化为PO、DTO、VO
1. POJO持久化之后==〉PO
(在运行期,由Hibernate中的cglib动态把POJO转换为PO,PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。PO对于programmer来说完全透明,由于是运行期生成PO,所以可以支持增量编译,增量调试。)
2. OJO传输过程中==〉DTO
3. POJO用作表示层==〉VO

DTOVO都应该属于它,在实际开发中,可能只有PO(Entity)和VO,在需要DTO的时候VO充当了DTO的角色,如果VO的字段A在数据库中不存在(即不需要从数据库中取值),则查询的时候可以随便赋一个值给字段A。

JavaBean

是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:
1. 这个类必须有一个公共的缺省构造函数。
2. 这个类的属性使用gettersetter来访问,其他方法遵从标准命名规范。
3. 这个类应是可序列化的。
因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO
简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用gettersetter方法来访问属性时,他就是一个JavaBean

DAO

data access object数据访问对象
1. 主要用来封装对DB的访问(CRUD操作)。
2. 通过接收Business层的数据,把POJO持久化为PO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值