2015-07-06 2 views
0

Если я заблокировал строку внутри метода, а затем вызвал этот метод из другого метода внутри того же класса, сохранит ли он блокировку?Объем блокировок в строке базы данных (простой)

Locked метод имеет ряд (как подготовленное заявление):

SELECT * FROM table_name WHERE row_name IN (?) FOR UPDATE 

Этот метод будет считать, выбранные и сделать список (или массив). Тогда метод в том же классе вызовет метод заблокированной строки, чтобы получить список/массив и выполнить фактические обновления.

Также обратите внимание, что я хочу иметь эти два разных метода в одном и том же потоке (он является параллельным).

Итак, сохраняет ли замок метод обновления?

ответ

4

Блокировки базы данных не связаны с Java-классами или любой другой конструкцией Java. Они связаны с транзакцией базы данных. Любая работа, выполненная в рамках транзакции, будет выполняться с помощью блокировки. Любая работа, выполненная в другой транзакции, блокируется блокировкой.

+0

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

+1

@Brian - да, данная транзакция связана с конкретным экземпляром Connection. – jtahlborn

Смежные вопросы