Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现:(注:使用了Spring JDBC抽象框架之后,应用开发人员只需要完成斜体字部分的编码工作。)
指定数据库连接参数
打开数据库连接
声明SQL语句
预编译并执行SQL语句
遍历查询结果(如果需要的话)
处理每一次遍历操作
处理抛出的任何异常
处理事务
关闭数据库连接
Spring将替我们完成所有单调乏味的JDBC底层细节处理工作。
Spring JDBC抽象框架由四个包构成:core
、 dataSource
、object
以及support
。
org.springframework.jdbc.core
包由JdbcTemplate
类以及相关的回调接口(callback interface)和类组成。
org.springframework.jdbc.datasource
包由一些用来简化DataSource
访问的工具类,以及各种DataSource
接口的简单实现(主要用于单元测试以及在J2EE容器之外使用JDBC)组成。工具类提供了一些静态方法,诸如通过JNDI获取数据连接以及在必要的情况下关闭这些连接。它支持绑定线程的连接,比如被用于DataSourceTransactionManager
的连接。
接下来,org.springframework.jdbc.object
包由封装了查询、更新以及存储过程的类组成,这些类的对象都是线程安全并且可重复使用的。它们类似于JDO,与JDO的不同之处在于查询结果与数据库是“断开连接”的。它们是在org.springframework.jdbc.core
包的基础上对JDBC更高层次的抽象。
最后,org.springframework.jdbc.support
包提供了一些SQLException
的转换类以及相关的工具类。
在JDBC处理过程中抛出的异常将被转换成org.springframework.dao
包中定义的异常。因此使用Spring JDBC进行开发将不需要处理JDBC或者特定的RDBMS才会抛出的异常。所有的异常都是unchecked exception,这样我们就可以对传递到调用者的异常进行有选择的捕获。