事务处理:所有的操作要么一起成功,要么一起失败,事务本身具有原子性(atomicity)、一致性(consistency)、隔离性或独立性(isolation)、持久性(durability)四个特性,这四个特性被称为ACID特征。
原子性:原子性是事务的最小单元,是不可再分隔的单元,相当于一个小小的数据库操作,这些操作必须同时成功,如果一个失败了,则一切的操作将全部失败。
一致性:在数据库操作的前后是完全一样的,保证数据的有效性。如果事务正常操作则系统会维持有效性,如果事务出现了错误,则返回到最原始状态,也要维持其有效性。这样保证事务开始时和结束时系统处于一致状态。
隔离性:多个事务可以同时进行,且彼此之间无法访问,只有当事务完成最终操作时,才可以看到结果。
持久性:事务完成之后,它对于系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持。
Mysql对事务的支持
JDBC事务处理
注意:由于切换数据库,数据库连接里的url地址需要修改。
若转账过程中出现事故:转出成功500,但转入失败500,则张三500李四依然是1000。此时就需要天剑事务处理:
1 | //将连接的自动提交设为false |
1 | package com.java.jdbc.chap09.sec01; |
事务保存点
张三转账后设保存点,后面回滚只回滚到张三后面的保存点:张三只管转出,不管后面,这个例子不恰当,一般不舍保存点。
1 | Savepoint sp = null; |