Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringJDBC和普通JDBC之间的区别?_Java_Spring_Jdbc_Spring Jdbc_Springsource - Fatal编程技术网

Java SpringJDBC和普通JDBC之间的区别?

Java SpringJDBC和普通JDBC之间的区别?,java,spring,jdbc,spring-jdbc,springsource,Java,Spring,Jdbc,Spring Jdbc,Springsource,SpringJDBC和JDBC之间的主要区别是什么?SpringJDBC?我只知道几个SpringJDBC模板 它们允许您从Spring容器中访问JDBC功能,并且与普通JDBC相比,它们提供了一些额外的简化,如连接管理和异常处理 基本上,Spring更难设置,但更容易开发,因此它完全取决于您所处理的问题的范围。Spring框架顶部JDBC层提供的Spring JDBC增值 定义连接参数 打开连接 指定语句 准备并执行语句 设置循环以迭代结果(如果有) 为每个迭代做这些工作 处理任何异常 处理交

SpringJDBC和JDBC之间的主要区别是什么?

SpringJDBC?我只知道几个SpringJDBC模板

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


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

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

  • 定义连接参数
  • 打开连接
  • 指定语句
  • 准备并执行语句
  • 设置循环以迭代结果(如果有)
  • 为每个迭代做这些工作
  • 处理任何异常
  • 处理交易
  • 关闭连接
  • 基本上,您不必担心管理基础设施/管道代码,也不必担心受其影响,只需担心数据及其到对象的映射

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


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

    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");
    
    SpringJDBC还提供异常转换(不再检查
    SQLException
    和数据库/方言之间的差异)和简单的ORM功能。

    1。)SpringJDBC模块是JDBC技术之上的抽象层,该层避免了JDBC编程中使用的锅炉板代码。 2.)Spring ORM模块是顶级ORM工具上的抽象层。
    3.)当使用类似hibernate的ORM工具时,今年春天我们有了一个锅炉板代码,ORM层避免了ORM工具的锅炉板代码。

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

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

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


    请尽可能地引用您的资料来源:在本例中,由于列出的某些项目不是Spring提供的,因此更是如此。