首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么数据传输对象(DTO)是反模式?

为什么数据传输对象(DTO)是反模式?
EN

Stack Overflow用户
提问于 2009-09-17 19:46:35
回答 11查看 66.3K关注 0票数 145

我最近无意中听到有人说data transfer objects (DTO)是一种反模式。

为什么?有什么替代方案吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-09-17 19:54:53

有些项目的所有数据都有两次。一次作为域对象,一次作为数据传输对象。

这种复制有巨大的成本,所以架构需要从这种分离中获得巨大的好处,才值得这样做。

票数 160
EN

Stack Overflow用户

发布于 2009-09-17 20:00:19

DTO不是反模式。当您通过网络发送一些数据(例如,发送到Ajax调用中的网页)时,您希望确保只发送目的地将使用的数据来节省带宽。此外,表示层的数据格式通常与本机业务对象的格式略有不同,这也很方便。

我知道这是一个面向Java语言的问题,但是在.NET语言中,匿名类型、序列化和LINQ允许动态构造DTO,这减少了使用它们的设置和开销。

票数 137
EN

Stack Overflow用户

发布于 2009-09-17 19:54:24

DTO an AntiPattern in EJB 3.0说:

在EJB3.0之前的EJB规范中,实体Beans的重量级特性导致了设计模式的使用,如数据传输对象(DTO)。DTO成为轻量级对象(首先应该是实体bean本身),用于跨层发送数据……现在EJB3.0规范使实体bean模型与普通Java对象(POJO)相同。使用这个新的POJO模型,您将不再需要为每个实体或一组实体创建DTO ...如果您想跨层发送EJB3.0实体,请让它们只实现java.io.Serialiazable

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1440952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档