J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋友会会心一笑)。
首先声明偶也不是什么高手,以下总结都是自己的体会。不对之处请您多指教。
PO:
persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
BO:
business object
业务对象
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。
VO :
value object值对象
ViewObject表现层对象
主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。
DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。
一个POJO持久化以后就是PO
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO
DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO
总结下我认为一个对象究竟是什么O要看具体环境,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就
是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象
的方式处理问题.
大家千万不要陷入过度设计,大可不必为了设计而设计一定要在代码中区分各个对象。一句话技术是为应用服务的。
欢迎指正。
画了个图,感觉没有完全表达出自己的意思。。。。。谁帮忙完善下,最好能体现各个O在MVC中的位置

分享到:
相关推荐
在"第2章"的文件中,可能包含了更详细的步骤,如创建Action类,编写ActionForm,配置struts-config.xml,以及创建JSP页面等。通过这个例子,开发者可以了解如何一步步搭建一个简单的Struts应用。 此外,Struts还有...
在这个教程的前四章中,我们将重点探讨以下几个核心知识点: 1. **Struts框架基础**: Struts框架是基于Servlet和JSP技术的,它的出现是为了克服传统JSP/Servlet开发模式中代码分散、难以维护的问题。它通过引入...
在第10章中,通常会涵盖Struts2框架的高级主题,可能包括以下几个关键知识点: 1. **拦截器(Interceptors)**:Struts2的核心组件之一,它们按照预定义的顺序在动作执行前后运行,可以用于日志记录、权限验证、...
在Struts2.1中,以下几个核心概念和知识点至关重要: 1. **Action类**:它是业务逻辑的入口点,继承自`ActionSupport`类或实现`Action`接口。开发者在此类中定义处理用户请求的方法,并返回一个表示结果的字符串,...
在"Struts应用开发完全手册第二十一章source"中,我们可以推测这一章节主要探讨了Struts框架的源码分析和实际应用。图书管理系统是一个常见的示例项目,用于演示如何使用Struts来管理书籍信息,包括添加、删除、修改...
总的来说,"Struts2实现的注册"涵盖了以下几个核心知识点: 1. Struts2框架的基本使用,包括Action、ActionSupport、拦截器、结果类型等。 2. JSP页面的创建与Struts2标签库的使用。 3. 数据库设计与操作,涉及MySQL...
在Struts2框架中,主要涉及以下几个关键知识点: 1. **Action类**:这是处理用户请求的核心组件,通常继承自`ActionSupport`类。在`execute()`方法中编写业务逻辑,返回一个表示结果的字符串,该字符串与配置文件中...
这一章可能涵盖以下几个关键知识点: 1. **Action与Result**: Struts2的核心是Action类,它是处理用户请求并返回结果的实体。开发者可能会看到Action接口和ActionSupport基类的实现,了解如何定义和执行一个Action...
在“Struts2.1权威指南”第四章中,我们很可能会深入探讨以下几个核心知识点: 1. **Struts2体系结构**:理解Struts2的核心组件,如Action、Result、Interceptor和ValueStack,以及它们如何协同工作来处理HTTP请求...
### Struts框架下的helloapp应用解析 #### 一、需求分析与框架选择 在着手开发任何应用程序之前,首要步骤是对项目需求进行深入分析。对于helloapp应用而言,其核心需求可归纳为以下几点: 1. **接收用户输入的...
在Struts2.1框架中,有几个关键的知识点值得深入探讨: 1. **Action类与结果类型**:在Struts2中,Action类是处理用户请求的核心,它定义了业务逻辑。每个Action可以有多个结果,这些结果根据执行Action后的逻辑...
在Struts2框架中,第5章通常会涵盖以下几个关键知识点: 1. **Action类和结果类型**:Action类是Struts2的核心,负责处理用户请求并生成响应。开发者需要创建自定义Action类来实现业务逻辑。结果类型定义了Action...
本章将主要关注以下几个关键知识点: 1. **Action类**:Action类是处理用户请求的中心,继承自`com.opensymphony.xwork2.ActionSupport`。开发者可以自定义Action类,实现业务逻辑。ActionSupport提供了默认的错误...
在这一章中,我们可以期待学习到以下几个关键知识点: 1. **拦截器(Interceptors)**:Struts2的核心之一是拦截器机制,它允许在动作执行前后插入自定义逻辑。拦截器可以用于日志记录、事务管理、权限验证等。第16...
第16章通常会深入讲解Struts 2的核心概念和技术,可能包括以下几个方面: 1. **Action与Result**:这是Struts 2的基础组件,Action类负责处理用户请求,而Result则定义了处理Action后如何呈现结果。这一章可能会...
第15章通常会深入探讨一些关键主题,可能包括但不限于以下几个方面: 1. **拦截器(Interceptors)**:Struts2的核心特性之一,拦截器可以插入到请求处理流程中,执行预处理和后处理操作,如日志记录、权限验证、...
在第六章中,我们可以预想会涵盖以下几个关键知识点: 1. **Action与结果类型**:Struts2中的Action类是处理用户请求的核心组件,它负责接收请求、执行业务逻辑并返回结果。结果类型(Result Type)定义了Action...
- **优势分析**:通过对各个框架进行深入的技术分析,可以发现Struts2在以下几个方面具有明显的优势: - **强大的拦截器机制**:Struts2提供了灵活的拦截器机制,允许开发者根据需求定制拦截器,从而实现了对请求...
在Struts2的源码中,我们可以看到以下几个核心概念和组件: 1. **Action类**:这是业务逻辑处理的核心,开发者通常需要继承Struts2提供的ActionSupport类来创建自己的Action。源码中可以看到Action类如何与请求参数...
在第21章中,可能涉及了以下几个核心知识点: 1. **Struts2.1概述**:Struts2.1是Struts框架的升级版,改进了Action、Interceptor、结果类型等关键组件,增强了性能和灵活性。 2. **Action类**:Action类是处理...