事务属性
上文的例子中,在声明事务时,用到了@Transactional(readOnly = false, propagation = Propagation.REQUIRED)。
中间的参数readOnly,propagation我们称为事务属性。它就是对事务的基本配置。事务属性有五个方面:传播行为,隔离级别,事务超时时间,回滚规则,是否只读。
由属性接口TransactionDefinition
可以看到,可返回四个基本事务属性:
public interface TransactionDefinition {
int getPropagationBehavior(); // 传播行为。
int getIsolationLevel(); // 隔离级别。事务管理器根据它来控制另外一个事务可以看到本事务内的哪些数据。
int getTimeout(); // 事务必须在多少秒内完成。
boolean isReadOnly(); // 事务是否只读。事务管理器能够根据这个返回值进行优化,确保事务是只读的
}
每个事务属性的含义在注释中已经描述的十分明确,后面主要介绍隔离级别与传播行为这两种事务属性。