我正在试图弄清楚所有这些是如何协同工作的。我知道DTO基本上只是一个数据容器,域对象可以来回传递给表单等。 Domain对象是包含DTO还是DTO,而Domain Object恰好具有将手动映射的所有相同属性?
如果我在服务中公开我的DTO类型,如何在不为客户端上的每个获取/设置操作创建往返的情况下使用getter和setter?我知道你可以有一个很长的构造函数,但是如果你有超过7个属性,这会变得很难看。
实现存储库模式时,是否要传入DTO或域对象?
答案 0 :(得分:4)
答案 1 :(得分:1)
我认为最好让DTO包含对Domain对象的引用,以便DTO的使用者可以开始使用Domain对象。也就是说,如果DTO的使用者不得改变Domain对象,则可能需要让DTO包含封装在Domain对象中的值。这可能很困难,因为您可能需要对Domain对象进行深层复制。
我不确定为什么暴露DTO类型作为服务会导致使用其getter / setter进行往返的问题。如果服务是远程服务,则无论如何都会将返回的DTO序列化,并且您的getter / setter将获取值的副本。如果服务不是远程的,那么进行“往返”似乎没有太大的代价,因为客户端和服务在同一个进程空间中。