PO BO VO DTO POJO DAO Controller 控制层 view(视图层)等概念简单理解
分类:
文章
•
2025-05-05 14:32:52
- PO(bean,entity等命名):
persistant object持久对象,简单理解一个PO就是***数据库中的一条记录。***
- BO(service,manager,business等命名):
business object业务对象,主要作用是把业务逻辑封装为一个对象。这样处理业务逻辑时,我们就可以针对BO去处理。
形象描述为一个对象的形为和动作,当然也有涉及到基它对象的一些形为和动作。比如处理一个人的业务逻辑,有睡觉,吃饭,工作,上班等等形为还有可能和别人发关系的形为。
- VO:
value object值对象,主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。
- DTO (经过处理后的PO,可能增加或者减少PO的属性):
Data Transfer Object数据传输对象,主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
- POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化):
plain ordinary java object 简单java对象,POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口
POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。
一个POJO持久化以后就是PO。
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO
- DAO(data access object数据访问对象):
基本没有互相转化的可能性和必要,主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO
- Controller 控制层
主要是action/servlet等构成(目前Spring mvc则是通过@Controller标签使用)
此层业务层与视图层打交道的中间层,负责传输VO对象和调用BO层的业务方法,负责视图层请求的数据处理后响应给视图层。
- view(视图层)
主要是指由jsp,html等文件形成的显示层。

总结一下要用具体的X0需要看具体环境及项目架构,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象的方式处理问题。
原文地址