Будет ли NamedParameterJdbcTemplate.update ждать завершения транзакции?

Я использую метод обновления в NamedParamameterJdbcTempalte, который реализует этот org.springframework.jdbc.core. namedparam.NamedParameterJdbcOperations.

Я просмотрел документы и единственное, что я смог найти, - это «этот метод выдает обновление через подготовленный оператор, связывающий заданные аргументы».

У меня есть код, который выглядит так

//Calling jdbcTemplate.update() here on Foo objects
//Calling another update on the same set of Foo objects (I know it's dump but let's just leave it as is)

Теперь мой вопрос: дождется ли первое обновление, пока транзакция не будет завершена, а затем вернется, или оно просто выдаст этот запрос и вернется? Когда я перейду ко второй строке, есть ли у меня какие-либо гарантии, что транзакция, инициированная первым вызовом update, полностью завершена?

Мне кажется, что время от времени я наблюдаю взаимоблокировку mysql, и я подозреваю, что это связано с тем, что первое обновление не завершило свою работу, когда приходит второе.

Нашел этот вопрос, но ответ на мой вопрос не отвечает. Как избежать использования mysql 'Обнаружен тупик при попытке получить блокировку; попробуйте перезапустить транзакцию »


person 0x56794E    schedule 15.08.2013    source источник
comment
Метод выполняет то, что задокументировано: он выполняет инструкцию. Больше ничего.   -  person JB Nizet    schedule 16.08.2013
comment
правильно. мы знаем это. но когда я перейду к следующей строке кода, есть ли у меня какие-либо гарантии, что первая транзакция полностью завершена?   -  person 0x56794E    schedule 16.08.2013
comment
Какая первая сделка? Оператор выполняется в контексте текущей транзакции, управляемой Spring. Я повторяю: метод делает то, что задокументировано: он выполняет инструкцию. Больше ничего. Таким образом, он не запускает транзакцию и не фиксирует транзакцию.   -  person JB Nizet    schedule 16.08.2013