Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.getSessionFactory().openSession(); //session di open
tx = session.beginTransaction(); //transaksi di mulai
/*
*Lakukan select insert update disini sesuai dengan bisnis logic
*/
simpanDataVoid1();//anggap saja kita sudah buat void untuk simpan data
simpanDataVoid2();
updateVoid();
tx.commit();//commit transaksi jika semua baris select/insert/update sukses di jalankan
}catch(RuntimeException e){
tx.rollback(); //rollback semua transaksi jika terjadi failure di salah satu statement transaksi
throw e;
}finally{
if(session!=null){
session.close(); //close session
}
}
Menggunakan Spring annotation @Transactional
Jika menggunakan Spring @Transactional maka akan jadi sesimple ini:
@Transactional
public void businessLogic() {
/*
*Lakukan select insert update disini sesuai dengan bisnis logic
*/
simpanDataVoid1();//anggap saja kita sudah buat void untuk simpan data
simpanDataVoid2();
updateVoid();
}
Cara ini tentunya saat nyaman, dan lebih simple dari pada cara yang pertama. Spring akan menangani sendiri masalah session dan rollback untuk annotation @Transactional. Sebelum void 'businessLogic' dipanggil spring secara otomatis membuka session dan mencomit nya. Bagaimana jika terjadi failure? Spring juga akan me-rollback jika terjadi fail di salah satu baris.
Untuk saat ini cukup sampai disini pengenalan Spring @Transactional. Bila ada waktu luang saya akan menulis lagi kelanjutan artikel ini... Terimakasih terlah berkunjung