事务
事务的四大特性(ACID)
- 原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。
- 一致性[c1] (Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。
- 隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。
- 持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。
Mysql当中的事务
start transaction;
开启事务
…
commit;
提交事务 或 rollback;
回滚事务
JDBC当中的事务
JDBC当中使用Connection对象来处理事务
Connection.setAutoCommit(boolean case)
- case为true时,表示开启自动提交事务,每执行一条SQL语句提交一次事务
- case为false,表示需要手动提交事务,我们自定义事务就要选择setAutoCommit(false)来手动开启事务
Connection.commit()
手动提交事务
Connection.rollback()
回滚事务
一般JDBC的使用格式为
Connection connection = null;
try{
connection = JDBCUtils.getConnection();
connection.setAutuCommit(false);
...
connection.commit();
}catch(SQLException e){
connection.rollback();
}
一个Connection对应一个事务,如果一个Connection对应了多个事务,在并发的情况下会造成提交和回滚的交叉
所以必须要注意一项事务统一使用一个Connection对象
[c1]其他特性都是为了这一特性服务的。