【问题标题】:Difference Between Spring JDBC Vs Plain JDBC?Spring JDBC 与普通 JDBC 的区别?
【发布时间】:2012-03-17 04:46:27
【问题描述】:

Spring JDBC 与 JDBC 的主要区别是什么?

【问题讨论】:

标签: java spring jdbc spring-jdbc springsource


【解决方案1】:

让我向您展示一些使用 JDBC 的简单示例:

final Connection connection = ds.getConnection();
try {
    final Statement statement = connection.createStatement();
    try {
        final ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Orders");
        try {
            resultSet.next();
            final int c = resultSet.getInt(1);
        } finally {
            resultSet.close();
        }
    } finally {
        statement.close();
    }
} finally {
    connection.close();
}

但是尝试使用资源时会好得多:

try (
        Connection connection = ds.getConnection();
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Orders");
) {
    resultSet.next();
    final int c = resultSet.getInt(1);
}

当然你可以提取通用代码并使用模板方法设计模式。实际上你会重新发明JdbcTemplate

final int c = new JdbcTemplate(ds).queryForInt("SELECT COUNT(*) FROM Orders");

Spring JDBC 还提供异常翻译(不再检查 SQLException 和数据库/方言之间的差异)和简单的 ORM 功能。

【讨论】:

    【解决方案2】:

    Spring 框架顶层 JDBC 层提供的 Spring JDBC 增值

    1. 定义连接参数
    2. 打开连接
    3. 指定语句
    4. 准备并执行语句
    5. 设置循环以遍历结果(如果有)
    6. 完成每次迭代的工作
    7. 处理任何异常
    8. 处理事务
    9. 关闭连接

    基本上,您无需担心基础架构/管道代码的管理和痛苦,而只需担心数据及其到对象的映射。

    Spring 利用模板模式隐藏所有底层细节,同时为您提供扩展挂钩来扩展和使用 JDBC。

    此外,还有一个定义良好的数据库异常 API,与低级 JDBC API 提供的异常层次结构相比,它对开发人员非常友好

    【讨论】:

    【解决方案3】:

    1.) Spring jdbc模块是jdbc技术之上的一个抽象层,该层避免了jdbc编程中使用的样板代码。 2.) Spring ORM 模块是顶级 ORM 工具的抽象层。 3.) 当再次使用像休眠这样的 ORM 工具时,我们有一个样板代码,这个 Spring ORM 层避免了 ORM 工具的样板代码。

    【讨论】:

      【解决方案4】:

      在我看来,JDBC 与 JDBCTemplate 共享一些功能,但它们可能完全不同。第一眼看到这个问题,我想到的主要区别是:

      • 如果您要处理大量数据,例如您想向数据库中插入数百万(或数十亿)行记录,则可能需要使用 JDBC。在不到 4 分钟的时间里,我通过 JDBC 和 MySQL 语句连接将一百万行包含不同信息的行插入到数据库中。相比之下,我用 JDBC 模板做同样的事情大概需要十多分钟。

      • 但是,如果您使用的是 JDBC,则与使用 JDBC 模板相比,必须编写更多代码才能正确处理。 Tomasz Nurkiewicz 通过代码说明了这一点,Santosh Gokak 提供了使用 JDBC 的步骤摘要。但是在幕后还有一件事是隐含的,那就是 Spring 的配置,因为 JDBC Template 是 Spring Framework 的一部分。如果您是 Spring 的 XML/Annotation 配置新手,事情可能会有点复杂,而 JDBC 虽然需要更多步骤,但在某种程度上更直观。

      【讨论】:

        【解决方案5】:

        Spring JDBC?我只知道几个 Spring JDBC 模板。

        它们允许您从 Spring 容器中访问 JDBC 功能,并且与普通 JDBC 相比,它们提供了一些额外的简化,例如连接管理和异常处理。

        基本上 Spring 更难设置,但更容易开发,因此这完全取决于您要处理的问题的范围。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-01
          • 2019-08-11
          • 2016-08-21
          • 2020-07-29
          • 2021-01-29
          • 1970-01-01
          相关资源
          最近更新 更多