Over het algemeen moet u Connection.commit()
. gebruiken en niet Connection.setAutoCommit(true)
om een transactie vast te leggen, tenzij u wilt overschakelen van het gebruik van transactie naar het 'transactie per afschrift'-model van autoCommit.
Dat gezegd hebbende, het aanroepen van Connection.setAutoCommit(true)
terwijl in een transactie de transactie wordt uitgevoerd (als de driver voldoet aan sectie 10.1.1 van de JDBC 4.1-specificatie). Maar je zou dat eigenlijk alleen moeten doen als je daarna in autoCommit wilt blijven, omdat het in-/uitschakelen van autoCommit op een verbinding een hogere overhead op een verbinding kan hebben dan alleen maar vast te leggen (bijvoorbeeld omdat het moet schakelen tussen transactiemanagers, doe extra controles , enz.).
Gebruik ook Connection.commit()
en gebruik niet het native SQL-commando COMMIT
. Zoals beschreven in de aansluitdocumentatie:
Het punt is dat commando's zoals commit()
en setAutoCommit(boolean)
kan meer werk op de achtergrond doen, zoals het sluiten van ResultSets
en afsluiten of resetten van Statements
. Met behulp van het SQL-commando COMMIT
zal dit omzeilen en mogelijk uw stuurprogramma / verbinding in een onjuiste staat brengen.