Anda mungkin telah memulai transaksi, dan mencoba memulai transaksi lain tanpa melakukan atau membatalkan transaksi sebelumnya. Idiom saat menggunakan demarkasi transaksi terprogram adalah sebagai berikut:
try {
sess.getTransaction().begin();
// do some work
sess.getTransaction().commit()
}
catch (RuntimeException e) {
sess.getTransaction().rollback();
throw e;
}
Ini rumit dan rawan kesalahan, dan inilah salah satu alasan mengapa menggunakan EJB atau Spring untuk melakukan transaksi deklaratif sangat berguna.