在Oracle JDBC访问中加入Spring特性
2007-05-10 12:20:43 来源:WEB开发网核心提示: 代码清单 16 和 17 演示了 Spring 的 RowCallbackHandler 和 PreparedStatementSetter 回调接口的用法,在这些代码清单中使用匿名内部类实现了这些接口,在Oracle JDBC访问中加入Spring特性(2),虽然与前面的代码清单中显示的
代码清单 16 和 17 演示了 Spring 的 RowCallbackHandler 和 PreparedStatementSetter 回调接口的用法。在这些代码清单中使用匿名内部类实现了这些接口。虽然与前面的代码清单中显示的 JdbcTemplate 的更简单的用法相比,开发人员编写的内部类必须知道关于 ResultSet 和 PreparedStatement 以及它们的各个 API 的更多信息,但您仍然无需关心 SQLException 的处理;JdbcTemplate 将执行异常处理。
前面的基于 Spring 的代码清单(例如代码清单 3 和 6 中使用的 JdbcTemplate)甚至没有提到 ResultSet、Statement、PreparedStatement 或 SQLException。这些高度抽象的方法对于不想关心 JDBC 的具体用法的开发人员特别有用。不过,这些极其方便的方法没有代码清单 16 和 17 所演示的内部类方法灵活。代码清单 16 和 17 中显示的更灵活的方法可以在需要时使用(只需稍微了解基本的 JDBC API)。在所有情况下,异常处理都由 Spring 异常层次结构来一致地执行,您不需要关心 SQLException。
其他好处
代码清单 1
try
{// JDBC Connection/Statement/Result Set}
catch (SQLException sqlEx){
// Handle the exception}finally
{try{
// Closing
connection *should*
close statement and result setif (stmt != null) stmt.close();
if (conn != null) conn.close();
}
catch
(SQLException sqlEx)
{System.err.println("SQLException NOT handled");
}
}
finally 子句通常被用来确保关闭数据库连接和语句。但即使当开发人员的确用这种方法确保成功关闭连接,代码也是冗长、膨胀和重复的。Spring 框架对连接处理和相关资源管理进行了抽象,开发人员不用直接处理上述事项,从而实现更一致的资源关闭并编写更易于理解的代码。
[]
赞助商链接