master-master Java yang saya sayangi dan cintai,

saya membuat aplikasi kecil-kecilan pakek ibatis,
nah disitu saya membuat suatu form header-detail,
kayak aplikasi penjualan gitu,

header :
nomer kwitansi

detail :
kode barang, dll.

untuk menyimpan semuanya, supaya aman, saya pakai transaction yang di 
Ibatis.
berikut ini code saya : 
try {
            mydao.getLocalSqlMap().startTransaction();
            for (int i = 0; i < listBarang.length; i++) {
                idelete = mydao.insert(listBarang[i]}
            mydao.getLocalSqlMap().commitTransaction();
            mydao.getLocalSqlMap().endTransaction();
        } catch (SQLException e) {
            e.printStackTrace();
        }

pertanyaan saya adalah sebagai berikut :
ketika aplikasi saya gagal melakukan eksekusi query didalam 
transaction, maka aplikasi akan stuck dan tidak bisa melakukan query 
lainnya walaupun di form yang lain, dengan alasan "ada transaksi yang 
sedang berjalan".
bagaimanakah untuk mencegah hal ini terjadi?
apakah saya harus pakai perintah rollback di dalam catch?
lalu jika aplikasi saya online, dan diakses oleh orang banyak, apakah 
si transaction bisa berjalan dengan baik? 
dan jika banyak orang melakukan transaction bersama-sama apakah akan 
ganti-gantian atau banyak transaction dalam 1 satuan waktu?

terima kasih sebelumnya.

Kirim email ke