我正在试图弄清楚如何从多种方法回滚提交。我想做类似以下的事情(为了简洁而编辑)
public void testMultipleMethodRollback() throws DatabaseException {
Connection conn = connect();
fakeMethodRollback1();
fakeMethodRollback2();
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
目前我的所有方法都是这样格式化的
public void fakeMethodRollback1() throws DatabaseException {
Connection con = connect();
PreparedStatement ps = null;
ResultSet rs = null;
// insert some queries
try {
String query = "some query";
ps = conn.prepareStatement(query);
ps.executeUpdate(query);
query = "some query";
ps = conn.prepareStatement(query);
ps.executeUpdate(query);
con.commit();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
throw new DatabaseException(e);
} finally {
close(rs, ps, conn);
}
}
因为我希望能够独立使用其他方法,如何在一个方法失败的情况下进行回滚,其他方法将回滚?我担心我的全班设置错误或至少错误,如果没有重大工作就无法完成。我无法更改返回连接的方法,因为我的方法的一半是get方法,它们已经返回其他数据。有什么想法吗?