价值对象 vs 数据传输对象

3
我曾参与一个项目,我们生产 Java WebService 并发布到服务器上。其他 Java 应用程序通过 ExtJS 消费了这个 WebService。
在生产者应用程序中,我们遵循领域驱动设计。我们使用了两种类型的 POJO:领域对象和 DTO 对象。这两个类都有相同的属性变量,而且 DTO 类实现了 Serializable 类。
首先,我们从数据库调用中创建领域对象,然后将领域对象转换为 DTO 并发布到 WebService 中。
现在我想知道,是否有必要使用这两种类型的对象?为什么 DTO 实现 Serializable(可能之一的原因是在 WebService 调用期间通过网络维护对象的状态,但这个理由对我来说不太清楚)?
欢迎提供任何相关链接或专家解释。
谢谢!
1个回答

3

为了能够进行传输,对象被制作成可序列化的。这允许将 Object 转换为字节,然后再将字节转换为 Object

请注意,通常 DTO 比您通常专门用于业务处理的领域对象轻量级(因为要传送到客户端)。

所以,在多层项目中,您可以例如有:

  • 映射到数据库的领域对象
  • 将处理业务规则的业务层
  • 从领域对象转换为 DTO
  • 将 DTO 传输到客户端

一些阅读资料:

http://www.oracle.com/technetwork/java/transferobject-139757.html

https://softwareengineering.stackexchange.com/questions/171457/what-is-the-point-of-using-dto-data-transfer-objects

DTO、VO、POJO、JavaBeans 之间的区别?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接