JDBC事务处理
每执行一条sql语句,就是一个单独的事务,要是一个事务中含多条sql语句需要开启事务和结束事务;
- 开启事务:start transaction
- 结束事务:commit或rollback
同一事务中所有的操作,都在使用同一个Connection对象。
开启执行事务,若事务中其中一个sql语句更改正确,而在另一个语句中遇到异常,若没有使用jdbc事务就会导致数据不一致,添加了jdbc事务凡遇到异常就会回滚到原来得数据。
满足条件
- **事务的原子性( Atomicity):**一组事务,要么成功;要么撤回。
- **一致性 (Consistency):**事务执行后,数据库状态与其他业务规则保持一致。如转账业务,无论事务执行成功否,参与转账的两个账号余额之和应该是不变的。
- **隔离性(Isolation):**事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
- **持久性(Durability):**软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候吧事务保存到日志里。
格式
try{
con.setAutoCommit(false);//开启事务
......
con.commit();//try的最后提交事务
} catch() {
con.rollback();//回滚事务
}