事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。例如银行转账,张三得到500,李四失去500,要么全部执行成功,或失败。
1.jdbc操作事务,获取一个Connetion
conn.setAutoCommit(false);开启事务,默认自动,设置手动提交
conn.commit();提交事务
conn.rollback()发生异常回滚
2.数据库操作事务
开启事务:start transaction;
事务提交:commit;
事务回滚:rollback;回到事务刚开始的样子
提交和回滚,事务结束
3.事务的特性
原子性,事务是一个不可分割的工作单位,要么全部成功,要么全部失败
一致性,使数据库从一个一致性状态换到另一个一致性状态。
隔离性。多个用户并发访问数据库时,当一个事务没提交时,其他事务操作不了。各个事务相互隔离
持久性,事务一旦提交,数据的改变是永久的
4.隔离性
脏读:指一个事务读取了 另一个未提交的事务
不可重复读:一个事务读取一个表的数据时,多次读取不同,一个事务读取了另一个事务的update的事务
虚读,幻读:读取了insert的数据
5.设置事务隔离级别:
read uncommitted 脏读,不可重复读,虚读都有可能发生 1这边事务没提交,2这边能看到
read commited 避免脏读。不可重复读,虚读都有可能发生 orale默认
repeatable read 避免脏读,不可重复读。虚读都有可能发生 musql默认
serializable 避免脏读,不可重复读,虚读
查看隔离级别:select @@tx_isolation;
更改隔离级别:set tx_isolation='xxxxx';