Generalnie powinieneś używać Connection.commit() a nie Connection.setAutoCommit(true) zatwierdzić transakcję, chyba że chcesz przełączyć się z korzystania z transakcji na model „transakcja na wyciąg” w autocommit.
To powiedziawszy, wywołując Connection.setAutoCommit(true) podczas trwania transakcji zatwierdzi transakcję (jeśli sterownik jest zgodny z sekcją 10.1.1 specyfikacji JDBC 4.1). Ale naprawdę powinieneś to robić tylko wtedy, gdy chcesz pozostać w trybie autoCommit po tym, ponieważ włączenie / wyłączenie funkcji autoCommit w połączeniu może mieć większe obciążenie dla połączenia niż zwykłe zatwierdzanie (np. ponieważ musi przełączać się między menedżerami transakcji, wykonaj dodatkowe kontrole itp.).
Powinieneś także użyć Connection.commit() i nie używaj natywnego polecenia SQL COMMIT . Jak wyszczególniono w dokumentacji podłączenia:
Chodzi o to, że polecenia takie jak commit() i setAutoCommit(boolean) może wykonać więcej pracy w tle, na przykład zamknąć ResultSets i zamykanie lub resetowanie Statements . Użycie polecenia SQL COMMIT ominie to i potencjalnie doprowadzi twój sterownik / połączenie do nieprawidłowego stanu.