Jumat, 21 September 2012

Menangani Transaction

Dukungan transaction oleh JDBC tergantung dengan Databasenya,karena ada database yang mendukung transaction dan ada pula database yang tidak mendukung transaction. MySQL mendukung transaction jika kita menggunakan InnoDB sebagai sistem tablenya, kalau kita menggunakan MyISAM maka transaction tidak didukung.

Transaction merupakan konsep penting dari database. Transaction memastikan perubahan data dilaksanakan dengan kaidah ACID (Atomicity, Consistency, Isolation, Durability). Kaidah ini memastikan semua proses perubahan data berjalan secara benar, jika ada yang salah maka semua perubahan dalam satu kesatuan logika harus dibatalkan (rollback).

Mari kita evaluasi kode diatas agar menggunakan transaction, sehingga jika satu proses insert gagal, maka semua insert yang dilaksanakan sebelumnya akan dibatalkan :


try{
connection.setAutoCommit(false);
PreparedStatement pInsert = conn.prepareStatement(
"insert into Person(nama) values(?)");
for(int i=0;i<100;i++){
pInsert.setString(1,"user ke " + i);
pInsert.addBatch();
}
pInsert.executeBatch();
connection.commit();
connection.setAutoCommit(true);
} catch (SQLException ex) {
try{
connection.rollback();
}catch(SQLException e){
}
}

Tidak ada komentar:

Posting Komentar