`
Struts_Spring
  • 浏览: 107457 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么是ValueObject (VO 模式)

    博客分类:
  • J2EE
阅读更多

什么是ValueObject

简单说,ValueObject的值(状态)一旦创建以后就不会改变了 。所以可以当基本数据类型 用。比如Java 中的String, BigDecimal, BigInteger都是ValueObject。StringBuffer就不是。

VO 就是DTO,是一种 设计模式 ,主要用于减少数据传送次数 ,常用在EJB中,现在的Struts项目中也提倡使用这种设计模式 ,DAO是一种访问数据库 设计模式 ,大概的思路就是将对一个数据库(和一个数据表)的操作封装到一个类中 ,由其他的类来调用这个类的方法 完成对数据库的操作,这样可以简化负责业务处理的类的复杂性和耦合性

DTO是介于WEB层与EJB层中间 的一层,一般采用数据传输对象 工厂来满足这种模式的设计需求。DTO    Factory是与具体用例相关的DTO逻辑的唯一驻留点,它可以帮助将客户端与域模型 分离。

  • DTO就是数据传输对象(Data Transfer Object )的缩写。

  • DTO模式或称VO 模式,是指将数据封装成普通的JavaBeans ,在J2EE多个层次之间传输。

  • DTO类似信使,是同步系统中的Message。

  • 该JavaBeans可以是一个数据模型Model。

  • 常见的方式就是为实体对象建立一个Model类,该类只包含这个对象所有字段的getter和setter 。例如用户User实体有name, password字段,则建立一个UserModel类,public方法有getName,setName,getPassword,setPassword。这样就可以把UserForm作为参数传给其他函数。

  • Data Transfer Object(DTO)模式是为了解决这样的问题:例如我们的一个实体Bean,其对应的数据库表的字段非常多,那么我们在其Home接口的create方法 中以及Enterprise Bean类的ejbCreate 方法中的参数可能就会很多,导致我们的这些方法不够elegant。我们可以通过定义一个简单的Java类(实现Serializable接口),其中定义一些属性,并提供相应的get和set方法来解决上面的问题。

    使用ValueObject来封装业务数据 ,并且有一个单独的方法 可以用来获取或者发送这个VO ,当客户端请求一些业务数据的时候,服务端就可以产生出一个VO ,并且将它赋值,最后,可以用传值 的方法传递给客户端。
    这样的好处是减少网络对话,加速层之间的数据交流 ,我觉得,这样更大的好处是使程序逻辑更加清楚,更加面向对象 。写VO 的时候,要实现Serializable 接口。
    public UserVO implements Serializable {
         private String loginId;
         private String password;
         private String name;
         private String role;
         ... ...
    }

  • 分享到:
    评论

    相关推荐

      20-C-ValueObject-Code.zip

      值对象(Value Object,VO)和数据传输对象(Data Transfer Object,DTO)是软件开发中的两种重要设计模式,尤其在C#这样的面向对象编程语言中,它们被广泛应用于数据管理和交换。下面将详细介绍这两种模式的概念、...

      论文研究-J2EE平台下动态自定义VO设计与实现.pdf

      2. VO(Value Object):值对象是软件开发中的一种设计模式,用于封装数据对象的属性和方法,它代表了业务对象的一些值或状态。VO通常用于数据的传输对象,实现数据的封装和传递,但在J2EE平台中,VO往往需要具有...

      关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

      与 PO 不同,VO(Value Object)是值对象,它是业务对象,是存活在业务层的,是业务逻辑使用的。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO ...

      po与vo区别.doc

      在Java开发领域,尤其是涉及到Spring框架以及数据持久化时,我们常常会遇到“PO”(Plain Old Java Object)和“VO”(Value Object)这两个概念。它们都是Java对象,但各自有不同的用途和特点。理解它们的区别对于...

      一个由MVC设计模式开发的例子,初学FLEX设计模式很好的资源

      得到的一系列参数存储在ValueObject类的公共变量中,ValueObject类是继承cairngrom类中valueobject类的,并且ValueObject文件是一个绑定的类 实例化事件并且把绑定类作为参数带过去,派发此事件 var historypassvalue:...

      java根据数据库自动生成vo 类

      在Java开发中,VO(Value Object)类通常用于在应用程序的不同层之间传递数据,比如从数据库获取的数据到前端展示。自动生成VO类可以大大提高开发效率,避免手动编写大量的getter、setter方法和其他样板代码。本篇将...

      由表名生成vo

      ### 由表名生成VO(Value Object):Oracle数据库中的实现方法 在软件开发领域,尤其是在基于数据库的应用程序开发过程中,经常会遇到需要根据数据库表结构自动生成对应的Java实体类(通常称为VO或DTO等)的需求。...

      EJB系统开发实战录之三

      该模式的核心思想是将实体Bean的相关属性封装成一个单独的对象(Value Object),并通过单次网络调用来传递这个对象,从而显著减少网络交互次数。这种做法不仅能提高系统的整体性能,还能简化客户端代码的复杂度。 ##...

      Java的(PO,VO,TO,BO,DAO,POJO)解释

      VO(Value Object)值对象 VO是Java中的另一个重要概念,通常用于业务层之间的数据传递。VO也是仅仅包含数据的对象,但它可以和表对应,也可以不对应,这根据业务的需要。VO和PO相似,但VO更像是抽象出的业务对象。...

      bo,vo,po的区别

      在IT行业中,尤其是在Java开发领域,我们经常遇到“VO”、“BO”和“PO”这样的术语,它们分别代表了Value Object、Business Object和Persistent Object。理解这三个概念对于编写清晰、可维护的代码至关重要。 首先...

      java术语(PO/POJO/VO/BO/DAO/DTO)

      3. VO(Value Object,值对象) VO主要用于在系统组件之间传递数据,它不包含任何业务逻辑,只包含属性和getter/setter方法。VO通常用于展示层,例如在Web应用中,从前端传到后端或者从前端返回到前端的数据就封装...

      一个自动化的Vo.rar

      Vo(Value Object)是一种设计模式,它代表不可变的数据对象,通常用于封装业务逻辑中的数据。这种模式在面向对象编程中非常常见,特别是在领域驱动设计(Domain-Driven Design, DDD)中。 在Java编程中,创建Vo类...

      J2EE设计模式.ppt

      DTO(Data Transfer Object)模式,又称为VO(Value Object)模式,主要用于在J2EE的多层架构间传输数据。DTO就像一个信使,将数据封装在普通的JavaBeans中,避免了直接传输数据库模型或业务对象带来的问题,特别是...

      PetStore 中EJB 的设计模式

      除了DAO和VO模式,PetStore可能还涉及到其他设计模式,如Service Locator、Singleton、Session Facade等,它们共同构成了复杂的EJB系统架构,提升了系统的可扩展性和可维护性。 3. **其他可能的模式** PetStore中...

      Laravel开发-laravel-vo

      在Laravel框架中,"Value Object"(值对象)是一种设计模式,用于封装那些具有特定值的数据,强调的是数据的不可变性。在本项目"Laravel开发-laravel-vo"中,开发者旨在深入探讨如何在Laravel应用中有效地使用值对象...

      Java设计模式 J2EE设计模式

      DTO(Data Transfer Object)模式,也称为VO(Value Object)模式,主要用于在J2EE的多层架构之间传递数据。DTO就像一个信使,它封装了业务逻辑处理所需的数据,并在不同层之间进行传输。在系统复杂性增加时,一个...

      自身关联的添加、检索及PO到VO得封装、转换

      - PO(Plain Old Java Object)通常代表数据库中的记录,而VO(Value Object)则更多地用于业务逻辑处理,两者之间的转换常常发生在持久层和业务层之间。在这个例子中,`MallPage`既是PO也是VO,因为它的属性直接...

      J2EE设计模式-PPT(JDON)

      【DTO(Data Transfer Object)模式】或VO(Value Object)模式,用于在J2EE的多层次架构中传递数据。DTO就像一个消息载体,它可以是数据模型Model的实现,帮助减少网络传输开销,并且在系统复杂化后,可能由多个...

      webgame客户端通信VO设计构想

      本文将重点探讨Webgame客户端通信中的VO(Value Object)设计构想。 #### 二、设计背景与目标 在Webgame开发过程中,客户端和服务端通过Socket通信传输数据,这些数据通常以字节数组的形式进行交换。为了更好地管理...

      六步骤轻松完成Hibernate中生成VO.xml

      Middlegen-Hibernate是一款强大的代码生成工具,主要用于基于数据库表结构自动生成Java实体类(Value Object, VO)以及对应的Hibernate配置文件。首先,我们需要访问其官方网站或其他可信源下载最新版本的Middegen-...

    Global site tag (gtag.js) - Google Analytics