Answering my own question:
- JDBC connections start out with auto-commit mode enabled, where each SQL statement is implicitly demarcated with a transaction.
- Users who wish to execute multiple statements per transaction must turn auto-commit off.
- Changing the auto-commit mode triggers a commit of the current transaction (if one is active).
Connection.setTransactionIsolation()may be invoked anytime if auto-commit is enabled.- If auto-commit is disabled,
Connection.setTransactionIsolation()may only be invoked before or after a transaction. Invoking it in the middle of a transaction leads to undefined behavior.
See JDBC Tutorial by Oracle.