Mungkin lebih sederhananya gini.

JTS itu implementasi JTA

Nah carapakainya gimana ? kita harus pakai JTA UserTransaction yang diambil
lewat JNDI (karena dimanage oleh kontener).

Jadi di kode kita ga ada lagi jdbc connection dan connection.commit, atau
hibernate session.beginTransaction(). Terus di kode kita ya sudah seamlessly
join. Jadi kalau kamu biasa bikin aplikasi gado2 mungkin kamu bikin program
kayak gini.

Transaction trx = session.beginTransaction(); // hibernate
EntityTransaction trx2 = entityManager.getTransaction(); // jpa
trx2.begin();
Connection connection =DriverManager.getConnection(); // jdbc
try{
....
//ini aplikasi gado2 saya
....
}finally{
trx.commit();
trx2.commit();
connection.commit();
}

blok finally ini single point of failure.

Nah dengan JTA yg jalan di JTS kamu buang semua kode gado2 diatas dengan
satu transaction doank yg diambil dari jndi.

InitialContext ic = new InitialContext();
UserTransaction transaction = ic.lookup("java:com/UserTrasnaction"); //
tergantung dari nama bindingnya;
transaction.begin();
try{
// sekarang ambil resource2nya dari jndi juga
session.save();
entityManager.persist();
prepareStatement.executeQuery();

 ... gongreng2 ..
 transaction.commit();
}catch(Exception e){
 transaction.rollback();
}

Nah kalau ada yg gonjreng2 di kode kamu, semuanya bakalan di rollback
otomatis deh .... gitu cuy ....

-- 
Warm Regards,
Arif Rachim

Kirim email ke