Для обновления с отдельным выбором и обновлением

У меня проблема с запросом for update. У меня есть два следующих метода:

Первая выбирает строки и возвращает карту, содержащую первичный ключ и значение.

public Map<String,String> method1() throws SQLException  {
    String sql = "select * from table where col1='someValue' for update";
    // ... do something and construct map, so map contains {colName, value}
    return map;
}

Второй метод берет карту из первого метода, а затем обновляет строку на основе значения карты.

public boolean method2(String pk){
    String sql = "update tableName set value = 1234 where primaryKey = pk";
    // ... execute query and return boolean of if row affected
    return booleanValue;
}

В третьем методе будут выполняться методы 1 и 2.

public void method3(){
    // execute method1, get value from map
    method1();
    // some other operations need to be done here...
    // pass value to method2 and execute
    method(value);
}

Я провел небольшое исследование и обнаружил, что в некоторых сообщениях говорится, что использование for update не должно открывать транзакцию слишком долго.

У меня вопрос: стоит ли брать select..for update и актуальное обновление отдельно?

На это невозможно ответить на основании предоставленной информации. Но вы можете рассмотреть возможность использования оптимистичного решения для параллелизма (например, вместо этого со столбцом «редакция» или «версия»).

Mark Rotteveel 17.12.2018 18:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
35
0

Другие вопросы по теме