事务的四种级别
(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本身不具备事务);
网友评论