将数据从DAO传输到服务层的有效方式

时间:2018-04-30 18:32:00

标签: java jdbc

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 数据库
  • 网络服务
  • 纯文本文件
  • 或其他地方

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

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

似乎你实际上缺少数据访问层,所以要回答你的问题:

  

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

编写返回DTO的实际DAO类。