2010-08-03 33 views
1

据我所知,数据传输对象被用于不同的目的,让我们结合在Java(JSF)的视图层基于web的应用程序(即,通常有映射在DB一些实体的对象,其可以范围也可用于业务逻辑层和表示层中使用的一些传输对象)。数据传输对象应该多大?

所以,我对精心设计的DTO应该如何看一些误解。我应该让他们尽可能小?或者我是否应该尝试尽可能多地传递信息,并设计它们,使DTO字段中的一部分(不同的用例)部分一次被初始化?

我应该考虑设计的DTO或他们应该是因为只有一些原始型的字段与他们的访问器一样简单,当使用一些OO原则(至少继承和组合)?

回答

2

DTO的,如果在所有的域对象/实体不同,应根据需要进行大 - 你应该正好传输,你需要的所有数据。

+0

所以,你怎么想,是不是一个好/坏主意,以创建大的DTO(我甚至可以给他们打电话容器)有很多特性,其中一部分将不会在同一时间被初始化,而另一部分在另一个时间,有时他们都会被初始化?或者你最好创建几个DTO,并根据用例使用一个或另一个或全部使用? – Roman 2010-08-03 20:49:16

+0

几个取决于用例,如果他们会大大不同。 1或2个字段的差别并不重要。 – Bozho 2010-08-04 06:14:38

1

任何语言的DTO应该是相当轻的重量。是否使用继承是一个只有你可以回答的问题 - 这实际上取决于业务需求。否则,DTO本身应该包含基本的get/set属性。

通常,这些对象是重量十分轻巧,但它真的取决于你所需要的数据/属性。如果你的DTO拥有1个属性和50个属性,如果你需要50个属性。当需要将数据传递给函数/方法时,DTO将不必增加所有这些额外的参数。你基本上只是传递一个对象。

1

DTOs应尽可能轻量级,与业务对象不同,且范围有限(例如级别对象)。

我说他们应该与业务对象分开,与Bozho的声明“如果完全不同于域对象”相反,因为DTO经常需要使用业务对象用户不应该使用的setter。

例如,我有一个Person对象和一个PersonDTO ... DTO需要一个设置人员的姓名(第一,最后等),但是这是从外部数据源检索到的,我的应用程序不是允许改变它,所以我的业务对象“Person”不应该有一个setter。