--事务传播属性(作用是如何定义当出现两个不同的操作的时候,两个不同事务之间如何协调处理)
methoda(){
methodb();
}
methodb(){
……
}
下面的解释都是基于单独执行methodb和执行methoda两个不同方法所产生的结果
public static final int propagation_required = 0;
--如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
--单独执行methodb,开一个事务,执行methoda开启事务,执行到methodb后,由于methoda已经存在事务,则methodb加入到methoda事务中
public static final int propagation_supports = 1;
--如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,propagation_supports与不使用事务有少许不同。
public static final int propagation_mandatory = 2;
--如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
public static final int propagation_requires_new = 3;
--总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
public static final int propagation_not_supported = 4;
--总是非事务地执行,并挂起任何存在的事务。
public static final int propagation_never = 5;
--总是非事务地执行,如果存在一个活动事务,则抛出异常
public static final int propagation_nested = 6;
--如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按transactiondefinition.propagation_required 属性执行
methoda(){
methodb();
}
methodb(){
……
}
下面的解释都是基于单独执行methodb和执行methoda两个不同方法所产生的结果
public static final int propagation_required = 0;
--如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
--单独执行methodb,开一个事务,执行methoda开启事务,执行到methodb后,由于methoda已经存在事务,则methodb加入到methoda事务中
public static final int propagation_supports = 1;
--如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,propagation_supports与不使用事务有少许不同。
public static final int propagation_mandatory = 2;
--如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
public static final int propagation_requires_new = 3;
--总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
public static final int propagation_not_supported = 4;
--总是非事务地执行,并挂起任何存在的事务。
public static final int propagation_never = 5;
--总是非事务地执行,如果存在一个活动事务,则抛出异常
public static final int propagation_nested = 6;
--如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按transactiondefinition.propagation_required 属性执行