Penggunaan Transaksi Java yang sederhana
Urusan Java akan ditanya selama beberapa wawancara.
Selama wawancara, hal pertama yang perlu kita jawab adalah: Transaksi dapat memastikan integritas dan konsistensi data.
Jika keterampilannya lebih dalam: cukup bicarakan beberapa prinsip (tetapkan tidak mengirimkan tugas sebelum tugas dimulai, dan kirimkan tugas setelah semua tugas diselesaikan.
Jika tugas terputus di tengah, rollback akan dilakukan dan tugas sebelumnya akan dibatalkan), dan contoh sederhana akan diberikan (seperti masalah menabung dan menarik uang.
Misalnya: Bank mentransfer uang antara dua akun, transfer dari akun A ke akun B untuk 1.000 yuan. Sistem ini pertama -tama mengurangi akun sebesar 1.000 yuan, dan kemudian menambahkan 1.000 yuan ke akun B. Jika semua eksekusi berhasil, database dalam konsistensi; Jika saja modifikasi jumlah akun A diselesaikan tanpa meningkatkan jumlah akun B, database dalam keadaan yang tidak konsisten, dan operasi sebelumnya perlu dibatalkan. )
Artikel ini secara singkat membahas transaksi Java. Ketika kami bertanya tentang transaksi Java, kami perlu tahu bahwa ini terkait dengan database.
satu. Mari kita lihat kode sederhana dulu
Gunakan JDBC untuk melakukan pemrosesan transaksi
public int delete (int sid) {// kelas yang mengimplementasikan basis data koneksi databaseConnection dbc = basis data baru (); // Dapatkan koneksi koneksi koneksi con = dbc.getConnection (); coba {con.setautocommit (false); // ubah metode komit default transaksi jdbc dbc.executeUpdate ("Hapus dari xiao di mana id =" + sid); dbc.executeUpdate ("hapus dari xiao_content di mana id =" + sid); dbc.executeUpdate ("hapus dari xiao_affix di mana bylawid =" + sid); con.Commit (); // Komit Transaksi JDBC Con.setAutocommit (true); // Kembalikan metode komit default transaksi JDBC DBC.Close (); kembali 1; } catch (exception exc) {con.rollback (); // rolle kembali transaksi jdbc dbc.close (); kembali -1; }} Kode di atas adalah eksekusi sederhana dari transaksi Java.
Tiga kali operasi penghapusan di atas dilakukan. Selama seseorang gagal, tugas akan digulung kembali, yang setara dengan kesuksesan bersama atau tidak ada yang dilakukan.
Jika tidak ada manajemen transaksi, eksekusi sebelumnya akan segera diperbarui dalam database.
Keluar dari tugas -tugas selanjutnya di mana pun eksekusi gagal, dan konsistensi data tidak dapat dijamin.
dua. Konsep Dasar Transaksi Java
Atomisitas: Transaksi adalah operasi yang lengkap. Operasi transaksi tidak dapat dipisahkan (atom);
Baik mengeksekusi mereka atau tidak satupun dari mereka
Konsistensi: Ketika suatu transaksi selesai, data harus dalam keadaan yang konsisten.
Isolasi: Semua transaksi bersamaan yang memodifikasi data diisolasi satu sama lain, yang berarti bahwa transaksi harus independen.
Seharusnya tidak bergantung pada atau mempengaruhi transaksi lain dengan cara apa pun (daya tahan): Setelah transaksi selesai, modifikasi pada basis data dipertahankan secara permanen, dan log transaksi dapat mempertahankan permanen transaksi.
Deskripsi Pemrosesan Transaksi Java: Jika Anda melakukan beberapa operasi pada database, setiap eksekusi atau langkah adalah transaksi.
Jika operasi database tidak dieksekusi pada langkah tertentu atau pengecualian terjadi, yang mengakibatkan kegagalan transaksi, sehingga beberapa transaksi dieksekusi dan beberapa tidak dieksekusi.
Ini mengarah pada rollback transaksi dan membatalkan operasi sebelumnya ...
Dalam operasi database, transaksi mengacu pada unit pekerjaan yang tidak terpisahkan yang terdiri dari satu atau lebih pernyataan SQL yang memperbarui database.
Hanya ketika semua operasi dalam transaksi diselesaikan secara normal seluruh transaksi dapat diserahkan ke database. Jika suatu operasi tidak selesai,
Seluruh transaksi harus dicabut.
Misalnya, dalam transaksi transfer bank, misalkan Zhang San mentransfer 1.000 yuan dari akunnya ke akun Li Si, pernyataan SQL yang relevan adalah sebagai berikut:
Perbarui Akun Set Money = Monery-1000 Where Name = 'Zhangsan'
Perbarui Akun Set Money = Monery+1000 Where Name = 'Lisi'
Kedua pernyataan ini harus diproses sebagai transaksi yang lengkap. Transaksi ini hanya dapat diserahkan ketika keduanya berhasil dieksekusi.
Jika satu kalimat gagal, seluruh transaksi harus dicabut.
Ada 3 metode untuk mengontrol transaksi di kelas koneksi:
(1) setautocommit (boolean autocommit): atur apakah akan secara otomatis mengirimkan transaksi;
(2) komit (); melakukan(); melakukan transaksi;
(3) rollback (); membatalkan transaksi;
Dalam API JDBC, kasus default adalah untuk secara otomatis melakukan transaksi, yaitu, setiap pembaruan ke database mewakili transaksi.
Setelah operasi berhasil, sistem secara otomatis memanggil komit () untuk berkomitmen, jika tidak rollback () akan dipanggil untuk membatalkan transaksi.
Dalam API JDBC, pengajuan transaksi otomatis dapat dilarang dengan menelepon setautocommit (false).
Kemudian Anda dapat menggunakan beberapa pernyataan SQL yang memperbarui database sebagai transaksi. Setelah semua operasi selesai, komit () dipanggil untuk membuat pengajuan keseluruhan.
Jika salah satu operasi SQL gagal, metode Commit () tidak akan dieksekusi, tetapi SQlexception yang sesuai akan dihasilkan.
Pada saat ini, Anda dapat menangkap pengecualian di blok kode, hubungi metode rollback () untuk membatalkan transaksi.
Secara umum, pengembang yang berspesialisasi dalam mengembangkan database harus memiliki pemahaman yang mendalam tentang transaksi.
Tetapi rata -rata programmer tidak perlu menghabiskan banyak waktu untuk ini. Hanya memiliki pemahaman tentang efek umum.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!