事务失效的几个原因
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
1事务的隔离级别
isolation
-
事务的隔离级别,默认是Isolation.DEFAULT。
几种值的含义如下: -
Isolation.DEFAULT:事务默认的隔离级别,使用数据库默认的隔离级别。
-
Isolation.READ_UNCOMMITTED:这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务- 未提交的数据。这种隔离级别会产生脏读,不可重复读和幻读。
-
Isolation.READ_COMMITTED:保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个- - 事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻读。
-
Isolation.REPEATABLE_READ:这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻读。
-
Isolation.SERIALIZABLE:这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。
propagation
- 代表事务的传播行为,默认值为Propagation.REQUIRED。
- Propagation.REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。比