JDBC事务代码
Connection conn;
try{
//获取数据连接
conn = DriverManager.getConnection("url", "user", "password");
//关闭自动提交机制
conn.setAutoCommit(false);
//设置事务隔离级别
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
//此处是sql执行代码
//........
//提交事务
conn.commit();
}catch(Exception e){
//回滚事务
conn.rollback();
}finally {
//...
}
回滚到指定点
JDBC3.0(Java 1.4及以后的版本)引入了一个全新的保存点特性,Savepoint接口允许用户将事务分割成多个阶段,用户可以指定回滚到事务的特定保存点,而并非像JDBC2.0一样只能回滚到开始事务的点。
下面的代码使用了保存点功能,再发生特定问题是,回滚到指定的保存点,而并非回滚整个事务。
Connection conn;
//获取数据连接
conn = DriverManager.getConnection("url", "user", "password");
try{
//设置事务隔离级别
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
//sql代码执行①
Savepoint savePoint1 = conn.setSavepoint("savePoint1");
//sql代码执行②
}catch(Exception e){
//如果执行了回滚事务,回滚到①处的savePoint1,①之前的sql操作,在整个事务提交后依然提交,但①之后的操作被回滚了
//回滚事务
conn.rollback();
}finally {
//...
//提交事务
conn.commit();
}
扫描关注下面二维码获得更多有用的资源!