银行交易如何实现类似事务回滚

在做的项目中,有一个基金产品的购买交易,里面的大致逻辑是 先判断用户是否基金开户,未开户发交易开基金账户>是否签约***(具体什么省略) 未签约发交易签约>最后一步发交易购买该款基金产品。 但现在的问题是购买失败则一个java类里的前两个交易都给做了现在,想不出什么类似操作数据库的事务回滚机制才控制这段交易,该交易在一个页面完成。望经验丰富的朋友给个思路,谢谢!

你可以使用应用层的事务框架,或者自己实现一个简单的:先将操作放入临时的表中,然后一次性操作。

事务实例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class RunInsert {

/**
 * @param args
 */
public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try {
       // 动态导入数据库的驱动
       Class.forName("com.mysql.jdbc.Driver");

       // 获取数据库链接
       conn = DriverManager.getConnection(
              "jdbc:mysql://localhost:3306/jdbc_teaching", "root", "");

       // 开启事务
       conn.setAutoCommit( false );

       // 创造SQL语句
       String sql = "INSERT INTO user_list ( user_name, user_password ) VALUES ( 'Eric', '123' )";

       // 执行SQL语句
       stmt = conn.createStatement();
       stmt.executeUpdate(sql);

       // 提交事务
       conn.commit();

       System.out.println( "OK!" );
   } catch (Exception e) {
       e.printStackTrace();
       // 回滚事务
       try {
          conn.rollback();
       } catch ( Exception e2 ) {}
   } finally {
       // 关闭Statement
       try {
          stmt.close();
       } catch (Exception e) {}
       // 关闭Connection
       try {
          conn.close();
       } catch (Exception e) {}
   }
}

}

事务回滚,看一下就知道了,黑马有一个课程就是说回滚事件,有空去看看!

这位兄弟应该是做电商的开发员,如果是在逻辑控制上(不局限于数据库操作的话),事务控制需要有一个规则。
首先定义BankTansaction接口,如:
public interface BankTransaction {
public void openTransaction() throws Exception;//打开事务
public void commitTransaction() throws Exception;//提交事务
public void rollbackTransaction() throws Exception;//回滚事务
}
乍一看,貌似数据库管理方式,其实是针对你所有业务程序的,只有用户确认了,再确认了,才发起一致请求。当然和用户的确认过程不是一个界面交互能做完的,只能使用数据库中间表,或cookie,session。

另外你应该写2个队列,是你的程序与银行接口之间的,一个专门处理发送交易,一个专门处理银行回执交易。每个用户发起的电商交易以工单方式下行操作,一步一步来,数据库工单表创建的合理点就好。

希望这个回答能帮得上你的忙。