值对象与数据传输对象

时间:2015-06-03 08:02:51

标签: java design-patterns serialization domain-driven-design data-transfer-objects

我是我们制作java webservice并发布到服务器的项目之一。其他一些java应用程序通过extjs使用Web服务。

该生产者应用程序遵循域驱动设计。 我们使用两种类型的pojos,Domain Objects和DTO对象。这两个类都具有相同的属性变量。而且DTO类正在实现Serializable类。

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

现在我想知道这是一个很好的做法来拥有这两种类型的对象?为什么dtos正在实现serialzable(一个原因可能是在webservice通过网络调用时保持对象的状态---这个原因我在网上找到了,但我不清楚)?

欢迎任何链接或此专家的解释。

先谢谢。

1 个答案:

答案 0 :(得分:2)

使对象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?