Anda harus secara umum menggunakan Connection.commit()
dan bukan Connection.setAutoCommit(true)
untuk melakukan transaksi, kecuali jika Anda ingin beralih dari menggunakan transaksi ke model 'transaksi per pernyataan' dari autoCommit.
Yang mengatakan, memanggil Connection.setAutoCommit(true)
sementara dalam transaksi akan melakukan transaksi (jika driver sesuai dengan bagian 10.1.1 dari spesifikasi JDBC 4.1). Tetapi Anda benar-benar hanya boleh melakukannya jika Anda bermaksud untuk tetap berada di autoCommit setelah itu, karena mengaktifkan / menonaktifkan autoCommit pada koneksi mungkin memiliki overhead yang lebih tinggi pada koneksi daripada sekadar melakukan (misalnya karena perlu beralih di antara manajer transaksi, lakukan pemeriksaan tambahan , dll).
Anda juga harus menggunakan Connection.commit()
dan tidak menggunakan perintah SQL asli COMMIT
. Sebagaimana dirinci dalam dokumentasi koneksi:
Masalahnya adalah perintah seperti commit()
dan setAutoCommit(boolean)
dapat melakukan lebih banyak pekerjaan di latar belakang, seperti menutup ResultSets
dan menutup atau menyetel ulang Statements
. Menggunakan perintah SQL COMMIT
akan melewati ini dan berpotensi membawa driver / koneksi Anda ke status yang salah.