MySQL和JDBC事物
mysql和jdbc事物
(一)事物
一、相关概念
1、事物的定义
一个事务是作用于一个的一个或多个数据表的一组动作,这组动作要么全部执行,要么全部不执行,如果其中一个动作失败,则所有动作恢复到动作执行前状态
例如:银行的账户资金转移
2、事物的四大特性(acid)
(1)原子性(atomicity):
事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。
(2)一致性(consistency):
事务执行后,数据库状态与其他业务规则保持一致。如转账业务,无论事物执行成功与否,参与转账的俩个账号余额之和应该是不变的。
(3)隔离性(isolation):
隔离性是指在并发操作中,不同事物之间应该隔离开来,使每个并发中的事物不会相互干扰。
(4)持久性(durability):
一旦事物提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。
二、在数据库中操作事物
1、mysql中
开启事物:start transaction
结束事物:commit或rollback
(三)在jdbc处理事物
在jdbc处理事务,都是通过connection完成的。
并且同一个事务的所有操作,都是通过同一个connection对象。
一、jdbc中的事务
1、connection中三个与事务相关的方法:
(1)setautocommit(boolean):设置是否自动提交事务,如果true(默认值为true)表示自动提交,也就是每条执行的sql语句都是一个单独的事务,如果设置false,那么就相当于开启了事务了;
(2)commit():提交并结束事物;
(3)rollback():回滚结束事物;
2、一般格式
jdbc处理事务的格式:
connection conn = drivermanager.getconnection(url,user,password); try{ conn.setautocommit(false);//开启事务 ... ... ... conn.commit();//提交事务 }catch{ con.rollback();//回滚事务 }