传智播客李勇Jdbc视频笔记--事务(转载)
原文链接:http://longdechuanren.iteye.com/blog/632403
?
1、事务的概念与JDBC事务处理
(1)原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。
(2)一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。
(3)隔离性(isolcation):一个事务处理对另一个事务处理没有影响。
(4)持续性(durability):事务处理的效果能够被永久保存下来 。
举例:银行转账
connection.setAutoCommit(false);//打开事务。
.....
....把进行转账的两步操作放在同一个事务中,如果一个出现异常,马上回滚
.....
connection.commit();//提交事务。
connection.rollback();//回滚事务。
2、事务的保存点处理:定义保存点可以用来回滚一部分内容
- static?void?test()?throws?SQLException?{ ??
-
????????Connection?conn?=?null; ??
-
????????Statement?st?=?null; ??
-
????????ResultSet?rs?=?null; ??
-
??????????
-
????????Savepoint?sp?=?null; ??
-
????????try?{ ??
- ????????????conn?=?JdbcUtils.getConnection(); ??
-
????????????conn.setAutoCommit(false);?????????? ??
- ????????????st?=?conn.createStatement(); ??
-
??????????????
-
????????????String?sql?=?"update?user?set?money=money-10?where?id=1"; ??
- ????????????st.executeUpdate(sql); ??
-
??????????????
- ????????????sp?=?conn.setSavepoint(); ??
- ???????????? ??
-
??????????????
-
????????????sql?=?"update?user?set?money=money-10?where?id=3"; ??
- ????????????st.executeUpdate(sql); ??
- ??
-
????????????sql?=?"select?money?from?user?where?id=2"; ??
- ????????????rs?=?st.executeQuery(sql); ??
-
????????????float?money?=?