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.