当前位置:   article > 正文

了解@Transactional_@transactional transactionmanager

@transactional transactionmanager

昨天对@Transactional中的传播做了记录,今天顺便把@Transactional整体做个了解

value

transactionManager的别名,可以指定使用事务管理器。在一个系统中可以指定不同的事务管理器。

propagation

事务传播行为。

这个已经在昨天做了记录。

propagation

isolation

事务隔离级别。默认是DEFAULT,这是专门为事务传播行为(REQUIRED或REQUIRES_NEW)设计的,因为它只适用于新启动的事务。

一共有4种隔离:

READ_UNCOMMITTED(TransactionDefinition.ISOLATION_READ_UNCOMMITTED),
READ_COMMITTED(TransactionDefinition.ISOLATION_READ_COMMITTED),
REPEATABLE_READ(TransactionDefinition.ISOLATION_REPEATABLE_READ),
SERIALIZABLE(TransactionDefinition.ISOLATION_SERIALIZABLE);
  • 1
  • 2
  • 3
  • 4

READ_UNCOMMITTED(未提交读)

最低的隔离级别,事务未提交前,就可能被其他事务读取,会出现幻读,脏读,不可重复读。

READ_COMMITTED(提交读)

一个事务提交后才能被其他事务读取到,会造成幻读,不可重复读。

REPEATABLE_READ(可重复读,默认级别)

保证多次读取同一个数据时,其值和事务开始的时候都是一致的,禁止读取到别的事务未提交的数据,会造成幻读。

SERIALIZABLE(序列化)

这是一个代价比较高的隔离级别,可以防止脏读、幻读、不可重复度。

脏读:

一个事务可以读取到另一个事务中未提交的数据

不可重复读:

在一个事务内,多次读取同一个数据

幻读

在一个事务内多次查询的结果不同,可能造成的原因是被另一个事务新增或者删除了第一个事务中的数据,同一个记录的数据被修改了,所有的记录也就发生了改变。

timeout

事务的超时时间,默认为底层事务系统的默认超时(-1),专门为REQUIRED或REQUIRES_NEW新启动的事务

readonly

只读事务(默认false),如果在只读事务时发生了异常,只读事务也是会忽略异常。

从设置的时间点到事务结束的过程中,其他事务提交的数据修改都会忽视,这是就是只读数据为了保障数据的一致性。比如报表查询是一次执行多个查询,这时候就是保障数据的一致性(因为在查询过程中可能有数据会被修改)

rollbackFor

导致事务回滚的异常类数组,必须是Throwable下的子类,默认情况下是在RuntimeException和 Error上回滚

rollbackForClassname

导致事务回滚的异常类名字数组

noRollbackFor

不会导致事务回滚的异常类数组

noRollbackForClassName

不会导致事务回滚的异常类名字数组

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/225487
推荐阅读
相关标签
  

闽ICP备14008679号