Cómo utilizar la transacción de primavera en multiproceso
Tengo un método como el siguiente:
<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>
¿Puede el methodB funcionar bien? Según tengo entendido, el método B adjuntará la transacción del método A, ¿qué sucede si el método A sale antes que el método B? Supongo que solo el método A puede ser comprometido por la transacción. Pero methodB no se comprometerá porque la transacción se comprometió antes.
¿Puedo usar @Transactional (propagation = Propagation.REQUIRES_NEW) para methodB. Esto puede permitir a methodB tener una nueva transacción. Pero según Spring Doc, la trascendencia del método A se suspenderá cuando invoque methodB. Me siento muy confundido aquí.
¿Puede alguien ayudarme en este asunto? Gracias por adelantado.