Transaction,一组操作同时成功或者失败,就是一个事务
- 银行转账是事务最经典的一个例子,从这个里面我们可以理解事务有何作用,下面我们用代码来解决一下这个问题
- 具体需求: A向B转账1000,成功后,A账户减1000,B账户加1000;如果失败则各自账户不变
String driverName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";
Connection conn = null;
Statement stmt = null;
preparedStatement pstmt = null;
Class.forName(driverName);
conn = DriverManager(url,user,password);
stmt = conn.createStatement();
conn.setAutoCommit(false);
String sql1 = "update t_bankaccount set money = money-1000 where uName = 'A' ";
String sql2 = "update t_bankaccount set money = money+1000
where uName = 'B' ";
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
conn.commit();
conn.rollback();
stmt.close();
conn.close();