在OracleJDBC访问中加入Spring特性(6)

文章作者 100test 发表时间 2007:03:14 13:57:34
来源 100Test.Com百考试题网


在利用 JDBC 访问 Oracle 对象的两种方式下(Struct 和 SQLData)都将使用抛出 SQLException 的方法来访问返回的类。代码清单 16 和 17 显示了如何使用匿名内部回调类来将 SQLException 隐藏在特有的非强制 Spring 框架异常层次结构之后。这些重新抛出的异常利用了与本文中的其他示例相同的异常转换。这些代码清单不仅专门演示了如何处理 Oracle 对象的基于 Spring 的访问,还演示了在其他的 JdbcTemplate 常规方法不适用时如何使用匿名内部回调类。

在代码清单 16 中,您将在本文中第一次看到在基于 Spring 的代码中出现 ResultSet 和 SQLException。不过,注意甚至在这些代码中也没有直接使用 SQLException。相反,Spring 框架通过其异常处理机制来处理任何抛出的 SQLException,您只需关心您希望捕获和处理的 Spring 异常。

代码清单 17 演示了本文中第一次在基于 Spring 的代码中使用 PreparedStatement,并显示了对 SQLException 的另一种引用。正如代码清单 16 的情况一样,SQLException 主要用于引用 Spring 框架的 JdbcTemplate 类,后者将处理它并将任何异常作为非强制 Spring 异常提供。

代码清单 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。

其他好处

Spring 框架为 JDBC 带来的好处除上面稍微详细介绍的之外,还存在其他几个将 Spring 框架用于 JDBC 的好处(在此不再进一步讨论)。这些好处包括:

Spring 的 JdbcTemplate 类支持其他几个由 Spring 提供的与本文所讨论的接口类似的接口。这些接口包括 ResultSetExtractor 和 PreparedStatementCreator,它们分别类似于 RowCallbackHandler 和 PreparedStatementSetter。JdbcTemplate 支持的许多接口中的另一个是非常有用的 BatchPreparedStatementSetter。

虽然不需要在 Spring 应用程序上下文中使用 Spring JDBC 抽象,但可以选择将 JDBC 抽象用于该上下文,这提供了额外的好处。可以使用 Spring 框架通过配置文件来将数据访问对象与业务对象相连(而不是在代码中直接耦合)。

org.springframework.jdbc.object 程序包支持将关系数据库操作(包括 DML 语句和存储过程)作为可重用的对象。这些线程安全的对象为开发人员提供了更高级别的关系数据库抽象(超过本文之前介绍和在所有代码示例中使用的 Spring 的 JdbcTemplate)。我个人喜欢 JdbcTemplate 提供的抽象级别,我觉得它对例行问题(如异常、结果集和资源管理)的处理所提供的支持级别正是我想要的。不过,如果机构或其开发人员想享受更高级别的关系数据库概念的抽象,而不必采用完整的对象-关系 (O/R) 映射技术(例如 TopLink 或 Hibernate),那么 org.springframework.jdbc.object 程序包将值得考虑。代码清单 12 中的存储过程示例提供了对该程序包的简单尝试。

Spring 框架提供了一个可以在容器外部使用的简单的 DataSource 实现,并提供了一个可以根据需要覆盖的抽象数据源类(参见 Spring 参考文档的第 10 章)。

除 JDBC 之外,Spring 框架还支持多种 O/R 映射技术(例如 Hibernate、iBatis 和 Java 数据对象 (JDO))。(参见 Spring 参考文档的第 11 章。)本文底部的在线参考部分包含了一条到关于将 Spring 与 Oracle 的 TopLink 对象-关系映射产品结合使用的其他文章的链接。


相关文章


OracleSQL内置函数的使用方法及结果(3)
简单介绍用RMAN进行Oracle自动备份
在Unix下的Oracle8.1.7.4内安装XDK
可以在一个分区安装三个Oracle产品吗
在OracleJDBC访问中加入Spring特性(6)
你的INTERNAL帐号密码忘记了怎么办
在OracleJDBC访问中加入Spring特性(5)
Oraclesqlplus语句编辑命令
oracle基本概念的学习笔记
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛