一、事务处理:指构成单个逻辑工作单元的操作集合。事务处理保证所有的事务都作为一个工作单元来执行,当一个事务中执行多个操作时,要么所有的操作都被提交Commit,要么整个事务回滚rollback到最初的状态。
二、设置:当一个连接对象被创建时,默认情况下是设置为自动提交事务,为了将多个SQL语句作为一个事务执行,可以调用 Connection对象的setAutoCommit()方法,传入
false来取消自动提交事务。在所有SQL语句成功执行后,调用 Connection对象的commit()方法来提交事务,或者在执行出错时,调用Connection对象的rollback()方法来回滚
事务。
三、事务隔离级别:事务隔离指的是数据库系统通过某种机制,在并行的多个事务之间进行分享,使每个事务在其执行过程中保持独立。SQL规范定义了4种事务隔离级别
2、Read Committed:此级别的事务隔离保证了一个事务不会读到另一个并行事务已修改但未提交的数据,也就是避免了“脏读”
3、Repeatable Read:此级别事务隔离避免了“脏读”和“不可重复读”,也就是说一个事务在执行过程中可以看到其他事务已经提交的新插入的数据,但是不能看到其他事务对已有记录的更新
4、Serializable:最高等级的事务隔离,同一时间只允许一个事务对同一个数据库进行操作。
四、在Connection接口中定义了setTransactionIsolation()方法,用于设置事务的隔离级别,还定义了如下5个常量,用作setTransactionIsolation()方法的参数
1、TRANSACTION_NONE:不支持事务
2、TRANSACTION_READ_UNCOMMITTED:同Read Uncommitted
3、TRANSACTION_READ_COMMITTED:同Read Committed
4、TRANSACTION_READ_REPEATABLE_READ:同Repeatable Read
5、TRANSACTION_SERIALIZABLE:同Serializable
五、代码
- conn.setAutoCommit(false);
-----取消自动提交
- conn.commit();
-----提交
- conn.rollback();
-----回滚
- conn.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
-----设置事务级别为TRANSACTION_REPEATABLE_READ