【问题标题】:Efficient way of transferring data from DAO to service layer将数据从 DAO 传输到服务层的有效方法
【发布时间】:2018-04-30 18:31:59
【问题描述】:

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

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

【问题讨论】:

    标签: java jdbc


    【解决方案1】:

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

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

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

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

    看来您实际上缺少数据访问层,所以回答您的问题:

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

    编写返回 DTO 的实际 DAO 类。

    【讨论】:

      猜你喜欢
      • 2014-03-31
      • 2013-11-03
      • 1970-01-01
      • 2013-09-09
      • 2019-02-28
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多