数据库事务和Spring事务的总结

2018-08-01  本文已影响0人  子暄_5f17

事务的四个特性ACID

A:原子性,C:一致性,I:隔离性,D:持久性。

事务的四个隔离级别:

1.读未提交:两个事务A,B。A有select语句,B有update操作,B未执行commit时,A事务执行select会读取B未提交的数据。

2.读已提交:A查询余额1000,B查询余额1000,Bupdate余额100元,B提交。A查询余额100元。

3.可重复读:A查询余额1000,B查询余额1000,Bupdate余额100,B提交,A查询余额1000.

4.顺序读:事务只能一个接一个的执行,不能并发。

脏读:读到未提交的数据。

不可重复读:一次事务中两次读取相同的列的数据不一样。

可重复读:一次事务中两次读取相同列的数据一样,针对update操作。

幻读:一次事务中同样的查询条件,查询的结果第二次比第一次多,针对insert操作。

Spring的事务的传播特性:

1.PROPAGATION_REQUIRED:如果当前存在事务,方法将加入到这个事务,不存在,就新建一个事务。

2.PROPAGATION_REQUIRED_NEW:当前存在事务,挂起当前事务,新建一个新的事务。

3.PROPAGATION_MANDATORY:当前方法必须运行在事务中,如果不存在事务,就抛出异常。

4.PROPAGATION_NEVER:当前方法不需要运行在事务,如果是事务调用,就抛出异常。

5.PROPAGATION_SUPPORTS:当前存在事务就在事务中运行,不存在就正常执行。

6.PROPAGATION_NOT_SUPPORTED:当前方法不支持事务执行, 如果存在事务,挂起事务,执行完后在继续执行事务。

7.PROPAGATION_NESTED:当父事务调用到这个方法,此时会创建一个savepoint,启动一个嵌套事务执行该方法。如果方法失败,回滚到savepoint点。嵌套事务是外部事务的一部分,如果外部事务失败了,会全部回滚。

上一篇下一篇

猜你喜欢

热点阅读