Sobes.tech
Middle+

Чанд транзаксия кушода мешавад агар дар як синф ду метод бошад, ҳар яке бо @Transactional propagation REQUIRES_NEW, ва аз методи аввал дуввумро даъват кунем?

sobes.tech AI

Ҷавоб аз AI

Ҳангоми истифодаи annotation @Transactional бо propagation = REQUIRES_NEW, ҳар як метод дар транзаксияи алоҳида иҷро мешавад. Вақте ки аввалин метод даъват мешавад, аввалин транзаксия кушода мешавад. Вақте ки аз аввалин метод дуюм даъват мешавад, транзаксияи ҳозира боздошта мешавад ва барои дуюм транзаксияи нав кушода мешавад. Пас аз анҷоми дуюм метод, ин транзаксия баста мешавад ва аввалин идома медиҳад.

Ҳамагӣ 2 транзаксия кушода мешавад: яке барои аввалин метод ва дигаре барои дуюм.

Масалан:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // транзаксия 1
    methodTwo(); // даъвати дуюм метод
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
    // транзаксия 2
}