数据传输对象与值对象是相同的还是不同的?如果它们不同,那么我们应该在哪里使用DTO,在哪里应该使用VO?
我们讨论的编程语言是Java,上下文是-有一个web应用程序,它从数据库获取数据,然后对其进行处理,最终将处理后的信息显示在前端。
发布于 2012-01-12 22:53:02
值对象是一个简单的对象,它的相等性不是基于身份的。数据传输对象是用于在软件应用子系统之间、通常在业务层和UI之间传输数据的对象。它只关注普通数据,所以它没有任何行为。
发布于 2012-01-12 23:36:39
如果您不想将实际的域对象发送到服务的客户端,请在服务的边界使用DTO -这有助于减少客户端和服务之间的依赖关系。
值对象是简单的对象,其相等性不是基于身份的,例如java.lang.Integer
DTO和值对象实际上并不是彼此的替代品。
发布于 2012-02-15 21:40:04
数据传输对象是将一堆数据从一层或另一层移动到另一层的杂七杂八的东西,其目标是通过将一堆数据打包到相同的数据结构中并一起发送来最小化来回调用的数量。有些人也使用它,比如Michael points out in his post here,这样一个层使用的类就不会暴露给调用它的层。当我将DTO称为杂乱无章时,我的意思是没有实现精确的抽象概念,它是帮助应用层之间进行通信的一种实用的变通方法。
值对象是我们只对它的值感兴趣的东西,比如monetary amount、日期范围或来自lookup table的代码。它没有身份,这意味着如果你有几个它们,你就不会关心跟踪哪个是哪个,因为它们本身并不是东西。
将值对象与在系统中具有唯一标识的对象进行对比,这些对象称为实体。如果你有一个跟踪客户付款的系统,客户和付款是实体,因为它们代表特定的东西,但付款上的货币金额只是一个价值,就你的系统而言,它本身并不存在。某些东西与您的系统的关系决定了它是值对象还是实体。
https://stackoverflow.com/questions/8830957
复制相似问题