打造更强的 Java 支持
2008-12-15 16:37:51 来源:WEB开发网事务保存点(transaction savepoint)。事务保存点使开发人员可以将更新成组地应用于数据库。这彻底改变了早期 JDBC 规范中的 all-or-nothing(要么全做,要么全不做)方法。事务保存点表示应用程序中的一些标记,必要时您可以根据应用程序逻辑回滚到事务保存点。
要使用这种功能,必须将 Connection 对象的 auto-commit 模式设置为 OFF,这可以通过使用 setAutoCommit 方法,以 false 为参数来完成。定义保存点和回滚在代码中都不难实现。在清单 6 中,我们将 Connection 对象自治的 AutoCommit 值设置为 false,然后执行两次更新。接着,我们定义一个名为 SavePoint1 的保存点,再执行两次更新。当执行接下来的一行 — db2Connection.rollBack(savePoint) — 时,便回滚到前两次更新后的状态。
清单 6. 使用事务保存点来回滚更改
// set auto-commit mode to off
db2Connection.setAutoCommit(false);
Statement statement = db2Connection.createStatement();
statement.executeUpdate(firstUpdateStringStatement);
statement.executeUdpate(secondUpdateStringStatemet);
// define a Savepoint marker
Savepoint savePoint = db2Connection.setSavePoint("SavePoint1");
statement.executeUpdate(thirdUpdateStringStatement);
statement.executeUpdate(fourthUpdateStringStatement();
// roll back to the savepoint
db2Connection.rollBack(savePoint);
// commit the changes
db2Connection.commit();
当您想不遵从更改时,这种方式的回滚比较有用。回滚可以结合 Boolean 逻辑,这样一来便可以设计复杂的业务事务。
游标保持能力。在 JDBC 3.0 之前,当提交事务时,在事务期间创建的任何 ResultSet 对象的游标都将被自动关闭。而对于 JDBC 3.0,您可以撤消这种效果,方法是将 ResultSet.HOLD_CURSORS_OVER_COMMIT 常量提供给 Connection 对象的 createStatement 或 prepareStatement 方法。因此,您可以对结果集中的一组记录执行一组更新操作,然后将更改提交给 DB2 UDB 服务器。这样可以将记录上的 DB2 服务器锁释放出来,而使其他应用程序得以看见更改过的数据,并允许应用程序继续处理 ResultSet。
更多内容
DB2 Universal JDBC Driver 是 DB2 家族中的战略组成部分,我们只是略微谈到 DB2 UDB v.8.2 中的一些 JDBC 增强。在 DB2 UDB 中还可以发现很多的代码示例,包括完整的 JDBC 驱动程序文档细节(在“Application Development Guide: Programming Client Applications”中)。新的基于 Eclipse 技术的 DB2 UDB v.8.2 Information Center 为对 DB2 开发人员和 DB2 管理员有用的信息提供了极好的搜索功能。
更多精彩
赞助商链接