Chciałbym zrozumieć wykorzystanie transakcji wiosennej z obsługą propagacji. Dokumentacja java wspomina, że jeśli metoda, która ma @Transactional(propagation = Propagation.SUPPORTS)
jest wywoływana z poziomu transakcji, obsługuje transakcję, ale jeśli nie istnieje żadna transakcja, metoda jest wykonywana nie-transakcyjnie.Wiosenne transakcje z obsługą Propagacji
Czy to już nie jest zachowanie wiosennych transakcji, niezależnie od 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();
}
}
W powyższym przykładzie kodu, niezależnie od tego, czy methodWithSupportsTx()
ma @Transactional(propagation = Propagation.SUPPORTS)
adnotacji byłoby wykonywane w ramach transakcji, w zależności od tego, czy methodWithRequiredTx()
ma @Transactional
adnotacji, prawda?
Więc jaka jest potrzeba/użycie posiadania poziomu propagacji WSPIERA?
Nie sądzę. Błąd jest zgłaszany tylko wtedy, gdy poziom propagacji jest NIGDY. Również PROPAGATION.SUPPORTS nie tworzy nowej transakcji. –