Java PO、BO、VO、DTO、POJO、DAO,哪个概念最关键?
摘要:DO(Domain Object)领域对象 就是从现实世界中抽象出来的有形或无形的业务实体 PO(bean、entity等命名): Persistant Object持久对象,数据库表中的记录在java对象中的显示状态 BO(service
DO(Domain Object)领域对象
就是从现实世界中抽象出来的有形或无形的业务实体
PO(bean、entity等命名):
Persistant Object持久对象,数据库表中的记录在java对象中的显示状态
BO(service、manager、business等命名):
Business Object业务对象
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
VO(from也有此写法) :
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对象,有一些Private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。
一个POJO持久化以后就是PO。
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO
----------------------------------
总结VO和DTO是一种Bean概念,只不过再不同层次时,其称呼不一样,在控制层称呼:DTO,进入视图层:VO
PO 持久对象,数据;
BO 业务对象,封装对象、复杂对象 ,里面可能包含多个类;
DTO 传输对象,前端调用时传输 ;
VO 表现对象,前端界面展示。
VO(Value Object) 值对象
通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由 GC 回收的。
VO(View Object)视图对象
用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(TO)(Data Transfer Object)数据传输对象
1 .用在需要跨进程或远程传输时,它不应该包含业务逻辑。
2 .比如一张表有100个字段,那么对应的PO就有100个属性(大多数情况下,DTO 内的数据来自多个表)。但view层只需显示10个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
DO(Domain Object)领域对象
就是从现实世界中抽象出来的有形或无形的业务实体。
PO(persistant object) 持久对象
1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。
2 .在hibernate持久化框架中与insert/delet操作密切相关。
3 .PO中不应该包含任何对数据库的操作
POJO(plain ordinary java object) 无规则简单java对象
实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
