java - 将数据从 DAO 传输到服务层的有效方法

标签 java jdbc

在我们的项目中,我们使用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/

相关文章:

java - FXML(JavaFX)中的图像标签,如何使用css设置大小?

java - 未为 recyclerView 触发触摸事件 (onClickListener)

java - 在 linux 上安装 JDK7

java - 我需要做什么来纠正我的 WebLogic 通用池连接数据源 JNDI 绑定(bind)错误?

java - java 中的突然结果集行为

java - Tomcat7 Catalina 上的 JDBC 与 MSSQL

java - Spring security - 找不到类 DaoAuthenticationProvider

java - 异或 java 中的最低有效位

mysql - ubuntu 12.4 上的 $CLASSPATH

java - 以编程方式在 Hibernate 中设置数据库 url/用户/密码