java - 使用还是不使用DTO?

标签 java design-patterns dao dto

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

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

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

class RangeValuesDTO {
  private int min_val;

  private int max_val;
}

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

最佳答案

您应该问自己为什么需要某种模式。就企业模式而言,不存在最佳实践之类的东西。正如 @TechExchange 所建议的,将数据库中的数据结构包装在一个对象中以保持接口(interface)的紧密和稳定,是一个值得关注的问题。但正如 @Tom Anderson 指出的那样,这应该称为值对象,而不是 DTO。

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

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

DTO 在分布式系统中特别有用,它们可以带来更粗粒度的接口(interface)并减少网络流量。

关于java - 使用还是不使用DTO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600780/

相关文章:

java - 在尝试更改密码之前检查密码是否符合 PAM 规则?

java - 组合布局管理器是 Java Swing 响应式设计的方法吗?

java - 如果设置了http.path,有没有办法提供/的路由

初始化静态成员的 C++ 设计,任何时候都需要

php - MVC 项目的正确设计

java - 将参数传递给 DAO 以获取 wicket 模型中的过滤结果

java - 获取一行 HBase 的特定列族中的列

java - 转换对象的设计

java - 测试通用 DAO 的最佳实践

java - DAO 插入行为似乎不正常