值对象与数据传输对象

Value Object vs Data Transfer Object

我参与了我们制作 java 网络服务并发布到服务器的项目之一。其他一些 java 应用程序正在通过 extjs 使用 Web 服务。

在那个生产者应用程序中遵循领域驱动设计。 我们使用了两种类型的 pojos,域对象和 DTO 对象。 classes 都具有相同的属性变量。而 DTO class 正在实现 Serializable class.

首先我们从 db 调用创建 domians 对象,然后将域对象转换为 dtos 并在 websevice 中发布。

现在我想知道拥有这两种类型的对象是不是一个好习惯?为什么 dto 实现可序列化(一个原因可能是在通过网络调用 web 服务时维护对象的状态——这个原因我在网上找到,但我不清楚)?

欢迎任何link对此或专家的解释。

提前致谢。

对象Serializable可以传输。它允许将 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

Difference between DTO, VO, POJO, JavaBeans?