什么是事务?
事务指逻辑上的一组操作,这组操作要么全部成功,要么全部失败.
事物的特性:
1.原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生.
2.一致性:事务处理前后数据的完整性必须保持一致.
3.隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离.
4.持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响.
关于事务隔离级别的一些概念:
脏读:一个事务读取了另一个事务改写但未提交的数据,如果这些数据回滚则读到的数据是无效的。
不可重复读:一个事务读取了另一个事务提交的更新数据
幻读:一个事务读取了另一个事务插入的数据
Spring事务管理高层抽象主要包括3个接口:
1.PlatformTransactionManager 事务管理器
2.TransactionDefinition 事务定义信息(隔离,传播,超时,只读)
--事务隔离级别:
MySQL默认事务隔离级别:REPATABLE_READ(可能出现幻读)
Oracle默认:READ_COMMITTED(可能出现不可重复读和幻读)
--事务传播行为:
重点的三种:PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_NESTED
3.TransactionStatus 事务具体运行状态