【问题标题】:DTO, how to avoid them?DTO,如何避免它们?
【发布时间】:2011-02-16 14:45:43
【问题描述】:

我们有一个旧的 Web 服务架构。我现在可以奢侈地使用 EJB (EJB 3) 进行新的开发,并且我想避免 DTO,因为它创建了 3 个并行层。如果我将休眠对象直接发送给客户端,关系会变成什么?创建分离的对象不会解决问题,因为关联的对象可能已经在其他地方获取。序列化这样的休眠对象将强制整个图被序列化。您对复杂对象使用什么方法(DTO 除外)?

【问题讨论】:

标签: java architecture jakarta-ee dto


【解决方案1】:

对于远程访问(远程 EJB、Web 服务等),我实际上更喜欢 DTO。它们不包含任何(代理)主键,仅包含业务键,并提供客户端视图,而实体对服务是私有的,可以根据需要进行更改。

【讨论】:

  • 你如何处理(父子)关系? DTO 包含另一个 DTO?如果你有几个这样的孩子关系怎么办?如果视图不需要所有子关系怎么办?
  • 是的,当然,DTO 可以根据需要形成对象图,并作为实体的过滤视图(省略客户端不需要的字段)。
【解决方案2】:

您可以使用 DDD 聚合模式:http://dddcommunity.org/node/88,根据我的经验,它具有域模型 + DTO 的好处,因为整体被视为一个单元。

我现在可以奢侈地使用 EJB 我希望您指的是 EJB3...因为以前的版本使用起来非常痛苦

【讨论】:

  • 是的,当然是 EJB3,如果你用过以前的版本,那就太奢侈了。
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2017-12-21
  • 2020-05-20
  • 1970-01-01
相关资源
最近更新 更多