Obecně byste měli používat Connection.commit() a nikoli Connection.setAutoCommit(true) k potvrzení transakce, pokud nechcete přejít z používání transakce na model „transaction per statement“ (transakce na příkaz) autoCommit.
To znamená volání Connection.setAutoCommit(true) zatímco v transakci potvrdí transakci (pokud je ovladač v souladu s částí 10.1.1 specifikace JDBC 4.1). Ale měli byste to udělat opravdu jen v případě, že chcete zůstat v autoCommit poté, protože povolení / zakázání automatického potvrzení u připojení může mít na připojení vyšší režii než pouhé potvrzení (např. protože potřebuje přepínat mezi správci transakcí, proveďte další kontroly , atd.).
Měli byste také použít Connection.commit() a nepoužívejte nativní SQL příkaz COMMIT . Jak je podrobně popsáno v dokumentaci připojení:
Jde o to, že příkazy jako commit() a setAutoCommit(boolean) může udělat více práce na pozadí, jako je zavření ResultSets a zavření nebo resetování Statements . Pomocí SQL příkazu COMMIT toto obejde a potenciálně uvede váš ovladač / připojení do nesprávného stavu.