在我们的项目中,我们使用DAO层从数据库访问数据,它只是使用 PreparedStatement
查询数据库并返回ResultSet
到服务层。我知道返回 ResultSet
是个坏主意对于服务层,因为关闭 ResultSet
时会出现许多复杂情况。 , PreparedStatement
, Connection
有效率的。同样,最好的想法是将数据从 DAO 层填充到 DTO 并从服务层中的 DTO 访问数据,但我们的代码编写为只有一种通用方法用于从数据库查询数据,并且它返回ResultSe
t。这个方法是从服务层的几个地方调用的,我们不能改变所有的地方并在那里编写DTO。
所以我的问题是在这种情况下将数据从 DAO 返回到服务层的最佳方式是什么?任何建议都会很好。
最佳答案
DAO 的全部意义在于它将数据访问从服务层中抽象出来,即服务层不应该知道(或关心)数据是否来自:
- 数据库
- 网络服务
- 纯文本文件
- 或其他地方
因此,DAO 的工作是将 SQL 结果转换为 DTO(列表)。
如果您有一个用于查询数据库的泛型类,并且它只返回一个 ResultSet
,那么该类就不是 DAO。它是 DAO 类使用的辅助类。
看来您实际上缺少数据访问层,所以回答您的问题:
What would be the best way to return data from DAO to service layer?
编写返回 DTO 的实际 DAO 类。
关于java - 将数据从 DAO 传输到服务层的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50106241/