Java: фиксация против отката против ничего, когда семантика без изменений?

Хорошо, я знаю разницу между фиксацией и откатом и то, что должны делать эти операции. Однако я не уверен, что делать в тех случаях, когда я могу добиться того же поведения при использовании commit (), rollback () и / или ничего не делать.

Например, у меня есть следующий код, который выполняет запрос без записи в базу данных: Я работаю над приложением, которое взаимодействует с базой данных SQLite.

try {
  doSomeQuery()
  // b) success
} catch (SQLException e) {
  // a) failed (because of exception)
}

Или, что еще интереснее, рассмотрим следующий код, который удаляет одну строку:

try {
  if (deleteById(2))
    // a) delete successful (1 row deleted)
  else
    // b) delete unsuccessful (0 row deleted, no errors)
} catch (SQLException e) {
  // c) delete failed (because of an error (possibly due to constraint violation in DB))
}

Обратите внимание, что с семантической точки зрения выполнение фиксации или отката в случаях b) и c) приводит к одинаковому поведению.

Как правило, в каждом случае есть несколько вариантов (a, b, c):

  • фиксация
  • откат
  • ничего не делать

Есть ли какие-либо рекомендации или преимущества в производительности при выборе конкретной операции ? Каков правильный способ?

Примечание: Предположим, что автоматическая фиксация отключена.

8
задан eold 18 January 2012 в 20:58
поделиться