一尘不染

在ejb3中使用数据传输对象被认为是最佳实践

hibernate

尽管显然不是所有场景都可以用一个设计覆盖,但现在是否普遍认为应该在表示层和业务层(本地或远程)之间来回传递ORM类,从而取代了对数据传输对象的需求?据我所知,使用ORM类会带来不必要的急切加载,上下文管理问题和紧密耦合的问题,但还可以节省大量时间,并使事情变得简单。现在是否存在一种标准的方法(通常在大多数情况下)通常会优先选择另一方法?


阅读 213

收藏
2020-06-20

共1个答案

一尘不染

这是一个非常有趣的问题,在过去的两年中,我一直在进行研究和试验。

我认为这里确实没有对或错的答案。我认为您不能简单地说我想要一个,因为通常您可能希望根据您的客户(网页,ws,计算机和/或本地,远程)使用混合功能。

这里要记住的重要一点是每种产品的优缺点是什么,并根据您的要求进行应用。

例如:

  • 如果您使用的是SEAM,那么您将希望避免使用分层结构,因为您可以访问扩展的持久性上下文。没有此支持的其他Web技术往往与DTO更好地配合使用,该DTO预先准备了该州。
  • 如果要发送远程消息,导入的目的是保持它的轻薄,DTO在这里通常比富域对象更好。在这里,您可以透明地禁止任何ORM问题/行为。
  • DTO模式的好处是可以保护您的客户免遭域更改。如果您的应用程序是Web服务,并且具有定义您的合同的域(实体)对象,这可能会在某些时候使您陷入困境,这一点尤其重要。

通过将系统分层包装并仔细公开和保护它们,可以为许多不同类型的客户端生成各种API。

2020-06-20