了解vo pojo javabean dto

时间:2022-12-14 17:32:56

1什么是vo、

1.VO是用new关键字创建,由GC回收的

PO是向数据库中添加新数据时创建,删除数据库中的数据时削除的。并且只能存活在一个数据库连接中,断开连接即被销毁

2.VO是值对象,业务对象,存活在业务层,是业务逻辑使用的,存活的目的就是为数据提供一个生存的地方。PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。PO的属性是跟数据库表的字段一一对应的。

2什么是pojo

  POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

  使用POJO名称是为了避免和EJB混淆起来而且简称比较直接其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

2.1Pojo的特点

  POJOPlain OrdinaryJava Object的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。

  POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便

2.2实例

  POJO有一些private参数作为对象的属性。然后针对每个参数定义了getset方法作为访问的接口。例如:

public class User {

private long id;

private String name;

public void setId(long id) {

this. id = id;

}

public void setName(String name) {

this. name=name;

}

public long getId() {

return id;

}

public String getName() {

return name;

}

}

POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表中的字段相对应。

3什么是javabean

  JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性

3.1需求

  JavaBeanjava类,属于某些特定的译码指导方针,并且扩展了适应性和范围,允许用户访问内部的属性和方法。通过这些,JavaBean类可以用于下列方法:

  (1. 在IDE中,JavaBean的功能允许应用开发者浏览其中的方法,即JavaBean是被编译的,并且无法利用原始的源文件。

  (2. 在 Remote Method Invocation(RMI) 的分布式风格中,这项功能听起来并不让人兴奋,但是在未来的包含企业版的JavaBean后,将改变这种情况。

  (3. 为了JavaBean的属性值和状态可以保存到磁盘上。

3.2范围

  JavaBean 的范围 Scope 是一个具有生命时间的变量JavaBean的范围在

  <jsp:useBean scope=”….>标志中右边进行表示。将产生一个JavaBean的快捷参考。

  说明:jsp服务器引擎将剥离<jsp。。。。标记。并且在最终用户的浏览器上无法显示实际代码。

  存在下面四种范围: 页面page、 请求request、 对话session、 应用application

3.3对话范围:

  对话范围的JavaBean 主要应用于跨多个页面和时间段: 例如填充 用户信息。 添加信息并且接受回馈,保存用户最近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端服务器删除。

3.3.1页面/请求范围:

  页面和请求范围的JavaBean有时类似表单 的bean , 这是因为 他们大都用于处理表单。表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HTTP/POST或者GET请求。另外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。

3.3.2应用:

  应用范围通常应用于服务器的部件,例如 JDBC 连接池、应用监视、用户计数和其他参与用户行为的类。

  在Bean中限制HTML的产生:

  理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。

  这里有一些非常重要的事情:

  (1. 不要试图在JavaBean返回的HTML中放置任何字体尺寸。

并不是所有的浏览器都相同。很多浏览器无法处理完整的字体尺寸。

  (2. 不要试图在JavaBean返回的HTML中放置任何脚本或者DHTML

向页面直接输出脚本或者DHTML相当于自我毁灭,因为某些浏览器版本在处理不正确的脚本时会崩溃(非常少但是有)。如果用户的JavaBean在运行时是动态的推出复杂的HTML语言,用户将陷入调试的噩梦。另外,复杂的HTML将限制JavaBean的寿命和灵活性。

  (3. 不要提供任何的选择。

  如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。

  按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称  bean。由于javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:

  (1. 可以实现代码的重复利用

  (2. 易编写、易维护、易使用

  (3. 可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。

  编写javabean就是编写一个java的类,所以你只要会写类就能编写一个bean,这个类创建的一个对象称做一个bean。为了能让使用这个bean应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:

  1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:

  getXxx(),用来获取属性xxx

  setXxx(),用来修改属性xxx.

  2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上面的"get""set"

  3. 类中方法的访问属性都必须是public的。

  4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。

4什么是Dto

DTOdream take off英文单词的缩写,代表意思为"梦想起飞"。正如热爱音乐的DTO团队的热血青年一般,带着自己的梦想向着未来前进,一同为音乐而奋斗。DTO也是一款软件应用的缩写,Data Transfer Object

4.1优缺点

  优点

  减少了远程调用次数。通过在单个远程调用中传输更多的数据,应用程序可以减少远程调用次数。提高了性能。远程调用可以使应用程序的运行速度大大降低。减少调用次数是提高性能的最佳方法之一。在大多数方案中,传输大量数据的远程调用所用的时间与仅传输少量数据的调用所用的时间几乎相等。隐藏内部情况。在单个调用中来回传递更多的数据,还可以更有效地将远程应用程序的内部情况隐藏在粗粒度接口的背后。这就是使用 Remote Facade 模式 [Fowler03] 的主要原因。发现业务对象。在一些情况下,定义 DTO 有助于发现有意义的业务对象。在创建用作 DTO 的自定义类时,您通常会注意到作为一组凝聚性信息而显示给用户或另一个系统的元素分组。通常,这些分组用作描述应用程序所处理的业务域的对象的有用原型。可测试性。将所有参数封装到可序列化对象中可以提高可测试性。例如,可以从 XML 文件中读取 DTO,并调用远程函数以测试它们。同样,可以轻松地将结果再序列化为 XML 格式,并将 XML 文档与所需结果进行比较,而不必创建冗长的比较脚本。
  缺点 

   可能需要太多的类。如果选择了使用强类型的 DTO,则可能必须为每个远程方法创建一个(如果考虑返回值,则为两个)DTO。即使在粗粒度接口中,这也可能导致大量的类。编写如此数量的类的代码并管理这些类会是很困难的。使用自动代码生成可以在一定程度上缓解此问题。  

  增加计算量。如果将服务器上的一种数据格式转换为可以跨网络传输的字节流,并在客户端应用程序内转换回对象格式,可以带来相当大的开销。通常,需要将来自多个源的数据聚合到服务器上的单个 DTO 中。要提高通过网络进行远程调用的效率,必须在任一端执行其他计算,才能聚合和串行化信息。  

  增加编码工作量。可以用一行代码完成将参数传递到方法的操作。使用 DTO 要求实例化新对象,并为每个参数调用 setters 和 getters。编写此代码可能是很乏味的。