什么是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;
... ...
}
分享到:
相关推荐
得到的一系列参数存储在ValueObject类的公共变量中,ValueObject类是继承cairngrom类中valueobject类的,并且ValueObject文件是一个绑定的类 实例化事件并且把绑定类作为参数带过去,派发此事件 var historypassvalue:...
from simple_value_object import ValueObject class Point ( ValueObject ): def __init__ ( self , x , y ): pass point = Point ( 1 , 2 ) point . x # 1 point . y # 2 point . x = 5 # ...
这是关于值对象(VO)模式和数据传输对象(DTO)模式的初学者教程,并附有示例。值对象是其相等性基于值而不是标识的对象。数据传输对象是用于移动数据的数据容器。
舒适值对象 方便的Value Object类的集合。系统要求您需要PHP> = 7.4.0,但是建议使用最新的稳定版本PHP。安装使用Composer安装: $ composer require cozy/value-objects贡献欢迎捐款,我们将全额认捐。 有关详细...
主要研究了J2EE平台下的模型元数据的封装,通过XML技术和J2EE平台的完美结合,扩展了现行的Value Object功能,实现了数据的双向交互,用户可以在运行期改变VO结构。
Value Object模式 Service Locator模式 使用持久性框架 持久性框架策略 小结 第4章 改进性能与伸缩性的设计模式 性能问题的原因 伸缩性问题的原因 城市休假订票应用程序 标识提高性能的模式 标识提高伸缩性的模式 ...
Laravel开发-eloquent-value-object 幼虫雄辩的值对象。
英国邮政编码ValueObject概要代表英国邮政编码的安装这是一个composer.json文件的最小示例,该文件仅定义了对邮政编码的依赖: { "require": { "vasildakov/postcode": "^1.1" }}程式码范例创建一个邮政编码对象 use...
PO可以严格对应数据库表,一张表对映一个PO。... VO:value object值对象、view object视图对象 PO:持久对象 QO:查询对象 DAO:数据访问对象——同时还有DAO模式 DTO:数据传输对象——同时还有DTO模式
Record to ValueObject 是一种实用程序,用于读取表示数据的 ASCII 文件(固定或 CSV),按行和列(记录和字段)组织,并使用每条记录的内容填充 ValueObject。 用于以语义方式读取/导入文本数据
php-value-object:另一个用于处理Value Objects并防止Primitive Obsession的不良习惯的库
问题描述: 经过各种百度,搜资料,发现了这样的问题。 这里记录一下,以防以后再犯这样的错误。 我用pandas来读取json文件 调试是正常的。 服务跑起来是出现这样了这样的错误。 ...首先我的manager....
get-js-object-key-value 返回给定 JS 对象的键和值 应用程序接口 var getKeyValue = require('get-js-object-key-value') getKeyValue(对象: JSObject ) JSObject可以是具有一个或多个属性的对象 返回 一个...
老版本的配置文件样例: org.hibernate.dialect.... <value>vo/Users.hbm.xml</value> <value>vo/Firstdate.hbm.xml</value> <value>vo/Arrangement.hbm.xml</value> </property>
继承者 nc.vo.pub.ValueObject 继承者 nc.vo.gl.pubvoucher.DetailVO 所有已实现的接口: java.io.Serializable, java.lang.Cloneable, java.util.EventListener, nc.vo.gl.vouchervaluechange....
VO( Value Object):储存特定值对象变量。 VIew(视图V):将Model的数据绑定互组件并广播侦听Cairngorm Event; Controller(控制器):侦听Cairngorm事件并将其映射到Cairngorm Command; Command(命令):调用...
验证值validate-value根据JSON模式验证值。状态类别状态版 依存关系 开发依赖 建立 执照安装$ npm install validate-value快速开始首先,您需要将validate-value集成到您的应用程序中: const { Value , isOfType } ...
想要明白什么是key/value数据库,就必须了解哈希表(Hash Table)这种数据结构。 比如,Berkley DB就是典型的key/value数据库。
基于e^3value的B2C电商商业模式研究——对比分析天猫商城与京东商城.pdf
java设计模式【之】享元模式【源码】【场景:多缓存可选模式】 /** * 享元模式(预加载单例) * “元” 理解为 “同一地址对象” * 运用共享技术,减少对象的创建,降低对象的数量,降低内存消耗,提高性能 * ...