是否使用DTO?

时间:2013-01-30 09:42:09

标签: java design-patterns dao dto

这似乎是一个非常简单的设计问题,但我很好奇你的意见。

我有一个DAO图层,一个方法返回某个值的最大值和最小值。所以它返回两个整数值,但是使用带有两个元素int[]int[0]=min_val的返回类型int[1]=max_val对于方法调用者来说不是很清楚,因为他必须确切地知道哪个元素是第一个哪个是第二个。

我应该在这里使用某种像这样的DTO ......

class RangeValuesDTO {
  private int min_val;

  private int max_val;
}

在如此简单的情况下,正确的模式是什么?

2 个答案:

答案 0 :(得分:2)

确切地说,您应该始终将数据包装在有意义且可重复使用的DataStructures中。

使用DTO可以帮助您实现这一目标。

例如,将来如果您的DAO返回另一个intstring您将做什么,如果您使用DTO,解决方案很容易添加int或{{1} }到DTO并且不影响应用程序的其他层。

所以+1 DTO

答案 1 :(得分:1)

你应该问问自己为什么你需要某种模式。在企业模式方面,没有最佳实践。正如@TechExchange建议的那样,从对象中的db包装数据结构以保持接口紧密和稳定是一个有效的问题。但正如@Tom Anderson指出的那样,这应该被称为价值对象,而不是DTO。

请记住,对DTO模式的需求有一些历史原因(参见here),主要是在EJB-3之前的世界。那些可能不再适用。

DTO可以帮助分离更高层直接访问数据层。然而,在简单的CRUD应用程序中,这可能会增加太多的间接性,从而增加了不必要的重复和复杂性,从而提高了维护性。您经常最终得到的DTO看起来与可能不会离开数据访问层的实体非常相似。

DTO在分布式系统中尤其有用,它们会导致更粗粒度的接口并减少网络流量。