Вы правы, это то, что I
означает кислота . Поскольку транзакции работают изолированно, другие транзакции не могут видеть их, прежде чем они будут зафиксированы. Но играть с уровнями изоляции - плохая практика. Я бы посоветовал вам запускать каждую итерацию в отдельной транзакции с началом и фиксацией внутри.
Это немного сложно в Spring, но вот пример:
public void batch() {
for(...) {
insert(...)
}
}
//necessarily in a different class!
@Transactional
public void insert() {
}
Обратите внимание, что batch()
- это , а не с комментариями @Transactional
, а insert()
должен принадлежать другому классу (служба Spring). Слишком долго комментировать, но это жизнь. Если вам это не нравится, вы можете использовать TransactionTemplate
вручную.