您能用简单的术语解释Transfer对象和Domain对象之间的区别吗?如果你能给出一个Java例子,那就太好了..
答案 0 :(得分:42)
如果使用贫血数据模型(即您的域对象没有任何逻辑),DTO和域对象可以是同一个对象。
答案 1 :(得分:15)
数据传输对象(DTO)用于在应用程序的不同部分(例如不同的层)或不同的应用程序之间交换数据。
域对象(DO)(以及派生它们的类)实现业务逻辑,因此它们只位于业务逻辑层/域中(基本含义相同甚至相同)如果条款不同的话。)
因为DO实现业务逻辑,所以它们可能很复杂,并且可以包括方法,事件等。
关于DTO的另一点
根据Martin Fowler的观点,DTO是几个对象的组合(每个对象都是大多数人通常称之为DTO的对象);理由是,在不那么频繁地发送较大数据包的情况下,成本较低(而不是“聊天”并且不断地通过网络发送许多小包)。
因此,大多数人将DTO视为单个对象时,Martin F说DTO只是一个包含几个离散(可能不相关)对象的“信封”。不是一个大问题IMO - 大多数人认为DTO是根据我在这个答案的顶部(或接近它的东西)的定义。
答案 2 :(得分:3)
传输对象由于其使用的性质而经常是可序列化的,如果调用是远程的并且在JVM之间,或者它们将以促进序列化的方式使用,例如有状态会话bean,则它尤其相关。为此目的,转移物体必须易受这种“处理”的影响,即。传输对象实现可序列化。
域对象可能不会反过来。域对象可能包含行为,但DTO仅仅是一种传输媒介。
答案 3 :(得分:-2)
在业务透视中的域对象,它是整个域和流的活动的参与者或主体,DTO是与忠实反映数据库对象的数据bean不同的数据对象(特别是在ORM体系结构中) DTO可以进行数据聚合,转换,组合以满足表示或某些数据需求,它不是主题,但Domain对象有基于其域级别定义的主题