Wednesday, 10 August 2016
Dimas Maryanto
Java, JDBC, MariaDB, Netbeans
Halo, ok kita lanjutkan ya postingan sebelumnya yang telah membicarakan tentang konsep seberapa pentingnya menggunakan konsep transaction pada JDBC. Mari kita buktikan berdasarkan postingan tersebut.
Ok silahkan buka lagi projectnya jdbc-mysql. Diasumsikan disini kita punya data seperti berikut:
Kemudian saya mau menambahkan data dengan menggunakan koding seperti berikut:
Maka klo di running maka hasilnya seperti berikut:
dan sekarang kita coba periksa ke tabel jurusan di dalam database maka hasilnya seperti berikut:
Bisa anda lihat khan hasilnya kalo query ke 1 dan ke 3 berhasil dinput ke table buktinya ada khan data dengan id SI dan MI, sedangkan untuk query ke 2 itu gagal karena untuk meng-update data dengan id SI ke IF tidak dapat dilakukan karena id IF sendiri udah ada sebelumnya. Saya rasa apa yang ada dikonsep sejajar dengan apa yang kita praktekan barusan ya, selanjutnya kita akan bahas tentang menggunakan konsep Transaction.
Sekarang kita bahas yang transaction tapi sebelum itu kita hapus dulu data sebelumnya dengan id SI dan MI dengan query seperti berikut:
Berikut adalah outputnya:
Jadi datanya telah kita kembalikan ke awal ya. sekarang perhatikan koding berikut ini:
Jadi disini kita punya 2 block, yaitu
kita menyimpan data jurusan dengan id SI dan nama Sistem Informasi
kita menyimpan data dengan id MI dan namanya Management Informatika dan meng-update id jurusan dengan id SI ke IF
Ketika dijalankan berikut hasilnya:
Berikut adalah data di tabel jurusan dalam database seperti berikut:
Nah itu tadi hasilnya, tapi anda ngerti gak alur program yang saya buat itu? klo gak silahkan baca dengan duduk manis, kosongkan pikiran, relax, ambil teh hangat bila perlu.
Pada block pertama yaitu seperti berikut:
Disini kita, sama seperti biasa ya cuman menyimpan data dengan id SI dan namanya Sistem Informasi tapi ada yang beda gak? coba perhatikan
koneksi.setAutoCommit(false); jadi ini magsudnya supaya tidak setiap ada query yang dikirim ke database itu disimpan ke database secara permanen tapi di cache atau disimpan secara temporary dulu dalam database.
koneksi.commit() ini digunakan untuk menyimpan secara permanen selama tidak ada error.
dan satu lagi koneksi.rollback() jadi yang satu ini akan mengembalikan ke commit terakhir, karena tidak ada yang di commit sebelumnya maka database tidak akan melakukan update apapun dalam sistemnya.
Sedangkan block ke dua yaitu seperti berikut:
Berikut penjelasannya:
Disini pada dasarnya sama dengan block pertama tapi disini ada 2 query yang dikirim ke database query pertama adalah tambah data jurusan dengan id MI dan yang ke dua yaitu meng-update id SI ke IF
Pada query pertama, klo dieksekusi berhasil karena tidak ada yang seperti itu sebelumnya makanya terdapat output query ke 2 berhasil di eksekusitapi datanya belum di commit maka klo di select * from jurusan pada saat ini belum ada datanya yang tampil dengan id MI tersebut klo gak percara coba aja tambahin lagi untuk menampilkan data diantara 2 query tersebut.
Pada query kedua, klo dieksekusi maka akan error kenapa error? karena sebelumnya klo anda perhatikan udah ada data dengan id IF karena id ini khan primary key jadi gak boleh ada data yang duplicat atau sama. karena pada query pertama block kedua belum di commit maka akan di rollback (kembalikan datanya ke commit pertama atau block pertama).
Ok saya rasa penjelasan diatas cukup jelas. Mungkin cukup sekian dulu postingan tentang implemantasi transaction di JDBC. see you next post!.
Dimas Maryanto
(@dimMaryanto93)
PT. Tabeldata Informatika
(Principal Software Engineer)
Research And Development is find or create code not just work it, but perfectly work.