事务
概念
保证一组数据库的操作,要么同时成功,要么同时失败
四大特性
- 隔离性:多个事务之间要相互隔离,不能互相干扰
- 原子性:指事务是一个不可分割的整体,类似一个不可分割的原子
- 一致性:保障事务前后这组数据的状态是一致的,要么成功,要么失败
- 持久性:指事务一旦被提交,这组操作修改的数据就真的发生变化了。即使接下来数据库故障也不应该对其有影响
事务的传播性
- REQUIRED(required): 外层方法有事务,内层方法就加入。外层没有,内层就新建
- REQUIRES_NEW(required_new): 外层方法有事务,内层方法新建。外层没有,内层也新建
- SUPPORTS(supports):外层方法有事务,内层方法就加入,外层没有,内层就也没有
- NOT_SUPPORTED(not_supported): 外层方法有事务,内层方法没有。外层没有,内层也没有
- MANDATORY(mandatory): 外层方法有事务,内层方法加入。外层没有。内层就报错。
- NEVER(never):外层方法有事务,内层方法就报错。外层没有,内层就也没有。
事务的隔离级别
- DEFAULT(default): 使用数据库默认隔离级别
- READ_UNCOMMITTED(read_uncommitted):读取且没有提交
- READ_COMMITTED(read_committed): 读取且提交
- REPEATABLE_READ(repeatable_read): 重复读
- SERIALIZABLE(serializable): 可以避免脏读、不可重复读和幻读,但是并发性极低,一般很少使用。