【发布时间】:2011-10-07 14:37:20
【问题描述】:
能否请您简单解释一下传输对象和域对象之间的区别?如果你能举一个 Java 的例子,那就太好了..
【问题讨论】:
标签: java architecture data-transfer-objects domain-object
能否请您简单解释一下传输对象和域对象之间的区别?如果你能举一个 Java 的例子,那就太好了..
【问题讨论】:
标签: java architecture data-transfer-objects domain-object
如果使用贫血数据模型(即您的域对象没有任何逻辑),DTO 和域对象可以是同一个对象。
【讨论】:
数据传输对象 (DTO) 用于在应用程序的不同部分(例如不同层)或不同应用程序之间交换数据。
Domain Objects (DO)(及其派生的类)实现业务逻辑,因此它们只位于业务逻辑层/领域(本质含义相同,甚至如果条款不同)。
由于 DO 实现业务逻辑,它们可能很复杂,可能包括方法、事件等。
关于 DTO 的另一点
根据 Martin Fowler 学派的思想,DTO 是多个对象的组合(每个对象都是大多数人通常所说的 DTO);理由是,在某些情况下,不那么频繁地发送较大的数据包会更便宜(而不是“健谈”并不断地通过网络发送许多小包)。
因此,大多数人会将 DTO 视为单个对象 Martin F 说 DTO 只是一个“信封”,其中包含 几个 离散(并且可能不相关)对象。不是一个大问题 IMO - 大多数人认为 DTO 是根据我在这个答案顶部的定义(或接近它的东西)。
【讨论】:
由于其使用的性质,传输对象通常是可序列化的,如果调用是远程的并且在 JVM 之间调用,这一点尤其相关,或者它们将以促进序列化的方式使用,例如有状态会话 bean。为此,转移对象必须易于受到这种“处理”,即传输对象实现可序列化。
域对象不能反过来说。领域对象可能包含行为,但 DTO 只是一种传输媒介。
【讨论】:
业务角度的领域对象,它是整个领域和流的活动的参与者或主体,DTO是数据对象,它与忠实反映数据库对象的数据bean不同(尤其是在ORM架构中) DTO 可以有数据聚合、变换、组合以满足表示或一些数据处理的需要,它没有主体,但域对象有基于其领域级别定义的主体
【讨论】: