Хорошо, я знаю разницу между фиксацией и откатом и то, что должны делать эти операции. Однако я не уверен, что делать в тех случаях, когда я могу добиться того же поведения при использовании 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):
Есть ли какие-либо рекомендации или преимущества в производительности при выборе конкретной операции ? Каков правильный способ?
Примечание: Предположим, что автоматическая фиксация отключена.