У меня есть метод, как показано ниже:
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();
}
Может ли метод B работать хорошо? Насколько я понимаю, метод B прикрепит транзакцию метода A, что, если метод A завершится до метода B?Я предполагаю, что только метод A может быть зафиксирован транзакцией. Но метод B не будет зафиксирован, потому что транзакция была зафиксирована ранее.
Могу ли я использовать @Transactional (propagation = Propagation.REQUIRES _NEW )для метода B. Это может позволить методу B создать новую транзакцию. Но согласно весеннему документу транзакция метода A приостанавливается, когда он вызывает метод B. Я чувствую себя очень запутанным здесь.
Может ли кто-нибудь помочь мне в этом вопросе? Заранее спасибо.