Jak korzystać z wiosennej transakcji w wielowątkowości
Mam metodę jak poniżej:
<code>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(); } </code>
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ę.