spring 事务的理解

1、Spring事务的本质其实就是数据库对事务的支持

2、spring事务的传播属性

    PROPAGATION_REQUIRED  支持当前事务、 如果当前没有事务,就新建一个事务。

    PROPAGATION_REQUIRES_NEW新建事务,如果当前存在事务,把当前事务挂起。

    PROPAGATION_SUPPORTS支持当前事务,如果当前没有事务,就以非事务方式执行。

    PROPAGATION_MANDATORY支持当前事务,如果当前没有事务,就抛出异常。

    PROPAGATION_NOT_SUPPORTED以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

    PROPAGATION_NEVER以非事务方式执行,如果当前存在事务,则抛出异常。

    PROPAGATION_NESTED

    如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。

3、数据库隔离级别

   Read-Uncommitted  0  导致脏读

   Read-Committed  1  避免脏读,允许不可重复读和幻读

    Repeatable-Read 2  避免脏读,不可重复读,允许幻读

   Serializable3串行化读,事务只能一个一个执行,避免了脏读、不可重复读、幻读。执行效率慢

脏读:一事务对数据进行了增删改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据。

不可重复读:一个事务中发生了两次读操作,第一次读操作和第二次操作之间,另外一个事务对数据进行了修改,这时候两次读取的数据是不一致的。

幻读:第一个事务对一定范围的数据进行批量修改,第二个事务在这个范围增加一条数据,这时候第一个事务就会丢失对新增数据的修改。

4、Spring中的隔离级别

猜你喜欢

转载自blog.csdn.net/fxbfxb111/article/details/82259545
今日推荐