глубокая запись в БД с использованием topLink после каждой l oop в java Spring транзакции: метод с requires_new, вызываемый из метода с require - PullRequest
0 голосов
/ 27 мая 2020

хотел бы понять, когда именно происходит фиксация и когда именно происходит откат в случае вложенной транзакции с разными уровнями изоляции для вызова и вызываемых методов,

Например, у меня есть две службы Spring, и я звоню method2 of service2 из method1 of service1.

Method1 имеет ТРЕБУЕМУЮ область транзакции, а Method2 имеет область транзакции REQUIRES_NEW, как показано в программе ниже.

@Transactional(propagation = Propagation.REQUIRED)
method1()
{
    for(int i=0; i<10; i++){
        service2.method2();
    }

    // Some more code which takes some time to process
}

}


Service2 {
 @Transactional(propagation = Propagation.REQUIRES_NEW)
 method2()
 {
    //Save some information to DB
    // Save an object using JPA
 }
}

Теперь мой вопрос: As i понять, что REQUIRES_NEW запустит новую транзакцию, но будет ли она немедленно фиксироваться на существующем методе2 или пружина будет ждать, пока метод1 не будет завершен, а затем зафиксируется?

Меня интересует, в какой момент времени происходит фиксация и блокировка строки в БД освобождается, что сохраняется в методе 2.

Примечание. Здесь я разместил оба метода в разных службах, чтобы Spring могла выполнять вложенную транзакцию.

со мной происходит то, что откаты работают, как ожидалось, и когда дело доходит до фиксации, хотя это независимая фиксация, похоже, что фиксация происходит только после завершения метода 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...