JDBC的事务控制和批量处理
一, jdbc的事务管理
1.所谓事务:是指一组原子操作(一组SQL语句执行)的工作单元。
2这个工作单元中的所有原子操作在进行期间,与其他事务隔离,免于因数据来源的交相更新而发生混乱,事务中的所有原子操作要么全部执行成功,要么全部失败。
3.创建JDBC的事务主要分以下步骤:
a) 设置事务的提交方式为非自动提交:conn.setAutoCommit(false);
b) 将需要添加事务的代码放在try、catch块中:
try {
//需要添加事务的业务代码
} catch (SQLException e) {
...
}
c) 在try块内添加提交操作,表示操作无异常,提交事务:conn.commit(); //正常流程,提交事务
d) 在catch块内添加回滚事务,表示操作出现异常,撤消事务:conn.rollback(); //发生异常,撤消事务
e) 设置事务提交方式为自动提交:conn.setAutoCommit(true); //自动提交事务
二.原则
每一个事务的处理必须满足ACID原则:
1. 原子性
原子性意味着每一个事务都必须被认为是一个不可分割单元。
2. 一致性
不管事务是完全成功完成还是中途失败,当事务使系统处于一致的状态时存在一致性。
3.隔离性
隔离性是指每个事务在它自己的空间发生,和其他发生在系统的事务隔离,而且事务的结果只有在它完全被执行时才能看到。
3. 持久性
持久性是指即使系统崩溃,一个提交的事务依然存在。
三.事务处理
1.用户必须关闭自动提交,事务才能由多条SQL语句组成
Set @@autocommit=0;
2.开始事务
Start transation;
3.结束事务
Commit
4. 撤销事务
Rollback
5回滚事务
Savepoint
三.事务隔离级
1.序列化
如果隔离级为序列化,用户之间通过一个接一个顺序地执行当前的事务提供了事务之间最大限度的隔离。
2,可重复读
如果用户在同一个事务中执行同条select语句数次,结果总相同。
3提交读
如果其他事务修改了相应的表,那么同一个事务的多个select语句可能返
回不同的结果。
4未提交读
如果这个事务使用其他其他事务不提交的变化作为计算的基础,然后那些未提交的变化被他们的父事务撤销,这就导致了大量的数据变化。