一、事务的特性:
1、原子性:事务不可分割,事务里面的操作要么全部成功,要么全部失败。
2、一致性:事务执行前后,数据的完整性必须一致。
3、隔离性:多个用户操作并发修改数据库记录,事务操作之间不能相互影响覆盖。通过设置数据库的隔离级别来保证隔离级别。
4、持久性:数据库记录被修改之后是永久的,即便数据库出现故障记录也不应被改变。
二、事务的接口:
1、PlatformTransactionManager(平台事务管理器)
2、TransactionDefinition(事务定义信息:隔离级别、传播方式、超时、只读)
2、TransactionDefinition(事务定义信息:隔离级别、传播方式、超时、只读)
脏读:一个事务读到另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。 不可重复读:在同个事务里,读到另一个事务已经提交的更新的数据,导致这个事务多次查询结果不一致。不可重复读 对应的是修改,即UPDATE操作 幻读:一个事务读取了几条记录后,另一个事务已经提交了一些数据,之后再查询时,会发现出现一些原来没有的数据 。幻读对应新增INSERT 隔离级别: READ_UNCOMMIT:可以出现脏读、不可重复读、幻读 READ_COMMITED:避免脏读,会出现不可重复读、幻读 REPEAT_READ:避免出现脏读和不可重复读,可能出现幻读(就是在开始读取数据(事务开启)时,不再允许修改操作) Serializable:是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。 大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。
3、TransactionStatus(事务运行状态)
3、TransactionStatus(事务运行状态)