usar new icon example codigo borderfactory java multithreading spring transactional propagation

java - new - Cómo utilizar la transacción de primavera en multiproceso



new icon java (1)

No, methodB() no se ejecutará en la misma transacción que methodA() . Spring @Transactional solo funciona en un solo hilo: crea una sesión cuando un hilo primero incorpora un método con @Transactional (o un método en una clase con @Transactional ), y luego lo confirma cuando abandona ese método.

En su ejemplo, la transacción finalizará después de programar el trabajo en el grupo de subprocesos. methodB() tendrá su propia transacción.

Tengo un método como el siguiente:

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(); }

¿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 que el método B tenga 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.