Java SpringJDBC和普通JDBC之间的区别?
SpringJDBC和JDBC之间的主要区别是什么?SpringJDBC?我只知道几个SpringJDBC模板 它们允许您从Spring容器中访问JDBC功能,并且与普通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增值 定义连接参数 打开连接 指定语句 准备并执行语句 设置循环以迭代结果(如果有) 为每个迭代做这些工作 处理任何异常 处理交
基本上,Spring更难设置,但更容易开发,因此它完全取决于您所处理的问题的范围。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虽然需要更多步骤,但在某种程度上更直观