Като цяло трябва да използвате Connection.commit() а не Connection.setAutoCommit(true) за извършване на транзакция, освен ако не искате да преминете от използване на транзакция към модела „транзакция на изявление“ на autoCommit.
Това каза, извикване на Connection.setAutoCommit(true) докато в транзакция ще извърши транзакцията (ако драйверът е в съответствие с раздел 10.1.1 от спецификацията JDBC 4.1). Но наистина трябва да правите това само ако искате да останете в autoCommit след това, тъй като разрешаването/деактивирането на autoCommit за връзка може да има по-високи разходи за връзка, отколкото простото извършване (напр. тъй като трябва да превключва между мениджъри на транзакции, направете допълнителни проверки и др.).
Трябва също да използвате Connection.commit() и не използвайте собствената SQL команда COMMIT . Както е описано подробно в документацията за свързване:
Работата е там, че команди като commit() и setAutoCommit(boolean) може да свърши повече работа във фонов режим, като затваряне на ResultSets и затваряне или нулиране на Statements . Използване на SQL командата COMMIT ще заобиколи това и потенциално ще доведе вашия драйвер/връзка в неправилно състояние.