Рекомендации по использованию транзакций: начать транзакцию, выполнить чтение или запись данных, зафиксировать транзакцию последним в блоке try-catch, отменить транзакцию первым в блоке исключения.
Вызовы начать транзакцию, зафиксировать транзакцию или отменить должны быть парными и выполняться в контексте одного метода.