Я хотел бы понять, как использовать пружинную транзакцию с поддержкой распространения.В документации Java упоминается, что если метод, имеющий @Transactional(propagation = Propagation.SUPPORTS)
, вызывается из транзакции, он поддерживает транзакцию, но если транзакция не существует, метод выполняется без транзакций.
Разве это уже не поведение весенних транзакций независимо от Propagation.SUPPORTS
?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
В приведенном выше примере кода, независимо от того, имеет ли methodWithSupportsTx()
аннотацию @Transactional(propagation = Propagation.SUPPORTS)
, она будет выполняться в транзакции в зависимости от того, имеет ли methodWithRequiredTx()
аннотацию @Transactional
, верно?
Так в чем же необходимость / использование наличия ПОДДЕРЖКИ уровня распространения?