首页 > 解决方案 > 将数据从 DAO 传输到服务层的有效方法

问题描述

在我们的项目中,我们使用 DAO 层来访问数据库中的数据,它只是使用查询数据库PreparedStatement并将其返回ResultSet给服务层。我知道返回ResultSet服务层是个坏主意,因为在有效关闭ResultSet,PreparedStatement时会出现许多复杂情况Connection。同样,最好的想法是将数据从 DAO 层填充到 DTO 并从服务层中的 DTO 访问数据,但是我们的代码编写为只有一种通用方法可以从数据库中查询数据并返回ResultSe吨。这个方法是从服务层的几个地方调用的,我们不能改变所有的地方并在那里写DTO。

所以我的问题是,在这种情况下,将数据从 DAO 返回到服务层的最佳方式是什么?任何建议都会很好。

标签: javajdbc

解决方案


DAO 的全部意义在于将数据访问从服务层抽象出来,即服务层不应该知道(或关心)数据是否来自:

  • 数据库
  • 网络服务
  • 纯文本文件
  • 或者别的地方

因此,DAO 的工作是将 SQL 结果转换为 DTO 的(列表)。

如果您有一个用于查询数据库的通用类,并且它只返回一个ResultSet,那么该类不是 DAO。它是 DAO 类使用的辅助类。

似乎您实际上缺少数据访问层,因此回答您的问题:

将数据从 DAO 返回到服务层的最佳方式是什么?

编写返回 DTO 的实际 DAO 类。


推荐阅读