Jak korzystać z wiosennej transakcji w wielowątkowości
Mam metodę jak poniżej:
ClassA.java
@Transactional
public void methodA(){
ExecutorService executorService = Executors.newFixedThreadPool(4);
executorService.execute(new Runnable() {
public void run() {
classB.methodB();
}
});
}
ClassB.java
@Transactional
public void methodB(){
updateDB();
}
Czy metoda B działa dobrze? Zgodnie z moim zrozumieniem metoda B dołącza transakcję metody A, a jeśli metoda A kończy się przed methodB? Myślę, że tylko metoda A może zostać zatwierdzona przez transakcję. Ale methodB nie dokona zatwierdzenia, ponieważ transakcja została zatwierdzona wcześniej.
Czy mogę użyć @Transactional (propagacja = Propagation.REQUIRES_NEW) dla metodyB. To może pozwolić metodzie B na nową transakcję. Jednak zgodnie z wiosennym dokumentem transkrypcja metodyA zawiesza się, gdy wywołuje metodęB. Czuję się tu bardzo zagubiony.
Czy ktoś może mi pomóc w tej kwestii? Z góry dziękuję.