Spring JDBC与普通JDBC之间的区别?

Spring JDBC VS JDBC之间的主要区别是什么?

让我向您展示一些使用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); } 

当然,您可以提取常用代码并使用模板方法 Design Pattern。 有效地你重新发明了JdbcTemplate

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

Spring JDBC还提供exception转换(不再检查SQLException和数据库/方言之间的差异)和简单的ORMfunction。

Spring框架在顶层JDBC层提供Spring JDBC值

  1. 定义连接参数
  2. 打开连接
  3. 指定语句
  4. 准备并执行声明
  5. 设置循环以迭代结果(如果有的话)
  6. 为每次迭代做好工作
  7. 处理任何exception
  8. 处理交易
  9. 关闭连接

基本上,您不必担心管理和遭受基础架构/管道代码,并且完全担心数据及其到对象的映射。

Spring利用模板模式隐藏所有低级细节,同时为您提供扩展钩子以扩展和使用JDBC。

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

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

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

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

基本上Spring更难设置但更容易开发,所以这一切都取决于你正在处理的问题的范围。