美文网首页BATJ架构
事务的四种级别以及spring事务的七中传播方式

事务的四种级别以及spring事务的七中传播方式

作者: 裘马轻狂大帅 | 来源:发表于2020-08-14 19:32 被阅读0次

    事务的四种级别

    (1)READ_UNCOMMITTED(读未提交):,可读取未提交事务的操作数据,这种情况会出现脏读、重复读、幻读问题;

    (2)READ_COMMITTED(读提交):一个事务等另一个事务提交之后才可进行读取,解决了脏读问题,但会出现重复读、幻读问题;

    (3)REPEATABLE_READ(重复读):读取事务开启的时候不能对数据进行修改,可能出现幻读问题;

    (4)SERIALIZABLE (序列化):是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用;

    spring事务的七中传播方式

    spring事务的七中传播方式主要是针对于方法中间传递时的事务机制,

    例如:以方法B为当前主体 ,方法A调用了方法B ,作为方法B你看方法A

    (1)PROPAGATION_REQUIRED(默认):如果A有事务则B加入A事务,如果A没有事务则新B建一个事务;

    (2)PROPAGATION_NEW:B总是开启一个新的事务,如果A有事务则将A事务挂起先执行B事务;

    (3)PROPAGATION_NESTED:RUGU :如果A没事务则新建一个事务,如果A有事务则把B的事务当成A的一个子事务(A事务rolback,commit影响B,B事务rolback,commit不影响A);

    (4)PROPAGATION_SUPPORTS:如果A没事务,那就按普通方法执行,如果有A事务则用A的事务(B本身不具备事务);

    (5))PROPAGATION_NOT_SUPPORTED:B总是非事务地执行,如果A有事务则把A事务挂起,自己还是以普通方法执行(B本身不具备事务);

    (6)PROPAGATION_NEVER:如果A没事务,那就按普通方法执行,如果A有事务则抛出异常((B本身不具备事务);

    (7)PROPAGATION_MANDATORY:如果A没事务就抛异常,如果A有事务则使用A的事务(B本身不具备事务);

    相关文章

      网友评论

        本文标题:事务的四种级别以及spring事务的七中传播方式

        本文链接:https://www.haomeiwen.com/subject/dgjndktx.html