PO(bean,entity等命名)
:
persistant object持久对象,数据库表中的记录在java对象中的显示状态
最形象的理解就是一个PO就是数据库中的一条记录。
好处是能够把一条记录做为一个对象处理,能够方便的转为其它对象。
BO(service,manager,business等命名):
business object
业务对象
主要做用是把业务逻辑封装为一个对象。这个对象能够包括一个或多个其它的对象。
形象描述为一个对象的形为和动做,固然也有涉及到基它对象的一些形为和动做。好比处理
一我的的业务逻辑,有睡觉,吃饭,工做,上班等等形为还有可能和别人发关系的形为。
这样处理业务逻辑时,咱们就能够针对BO去处理。
VO(from也有此写法) :
value object值对象
主要体如今视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。而后用一个VO对象在控制层与视图层进行传输交换。 html
DTO (通过处理后的PO,可能增长或者减小PO的属性):
Data Transfer Object数据传输对象
主要用于远程调用等须要大量传输对象的地方。
好比咱们一张表有100个字段,那么对应的PO就有100个属性。
可是咱们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时咱们就能够用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端之后,若是用这个对象来对应界面显示,那此时它的身份就转为VO java
POJO(POJO是一种概念或者接口,身份及做用随环境变化而变化) :
POJO有一些private的
参数
做为对象的属性。而后针对每一个
参数
定义了get和set方法做为访问的接口
plain ordinary java object 简单java对象
即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具备任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。
一个POJO持久化之后就是PO
。
直接用它传递、传递过程当中就是DTO
直接用来对应表示层就是VO
DAO(data access object数据访问对象):
这个你们最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来封装对数据库的访问。经过它能够把POJO持久化为PO,用PO组装出来VO、DTO
Controller 控制层主要是action/servlet等构成(目前Spring mvc则是经过@Controller标签使用)
此层业务层与视图层打交道的中间层,负责传输VO对象和调用BO层的业务方法,负责视图层请求的数据处理后响应给视图层。
view(视图层)
主要是指由jsp,html等文件造成的显示层。
总结一下要用具体的X0须要看具体环境及项目架构,在不一样的层、不一样的应用场合,对象的身份也不同,并且对象身份的转化也是很天然的。就像你对老婆来讲就是老公,对父母来讲就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各类逻辑,让你们能更好的去用
面向对象的方式处理问题。
在平时开发项目中你们千万过分设计各层,由于这样会带来大量的工做和重复工做。若是不是大型系统可简化一些层,由于技术是为应用服务的。
上述名词在实际项目的应用举例 名称 (称谓- 实际名称)
控制层(
Controller-action), 业务层/服务层( bo - manager ) 实体层(po-entity) dao(dao) 视图对象(Vo-本项目省略) 视图层(view-jsp/html)