Henri Blog

Study and Share knowledge

Posts Tagged ‘JAVA

Java Transaction Design Strategies

with 2 comments

Java Transaction Design Patterns

Java Transaction Design Strategies

Bulan ini gw berhasil membaca secara keseluruhan buku berjudul “Java Transaction Design Strategies”. Buku ini membahas Transaction dengan mengambil contoh implementasi di EJB dan Spring. Melalui tulisan ini gw coba merangkum isi buku tersebut.

Secara garis besar, buku ini membahas 2 point: transaction model dan transaction design pattern. Sebelum membahas tentang 2 point tersebut, buku ini membahas transaction properties dan JTA and JTS yang menurut gw merupakan basic untuk mengerti transaction dalam java.

Transaction properties yang dibahas dalam buku ini:

  1. Atomicity. suatu transaction harus commit/rollback atas seluruh proses yang dilakukan dalam single unit of work (SUW).
  2. Consistency. ketika proses transaction berlangsung, database integrity (constraint) tetap terjaga.
  3. Isolation. suatu level penguncian transaction dari transaction yang lain, misal data yang sedang diupdate oleh transaction A dilock sehingga transaction B tidak bisa mengakses data tersebut.
  4. Durability. setelah commit sukses dilakukan maka dijamin seluruh proses transaction selesai (seluruh data telah tersimpan secara permanen).

JTA (Java Transaction API) merupakan kumpulan interface untuk proses pengaturan transaction. JTS (Java Transaction Service) merupakan low-level code yang implement JTA. Analogi dari JTA dan JTS adalah JDBC dan database driver. JTA (analogi JDBC) merupakan kumpulan interface yang siap pakai sedangkan JTS (analogi database driver) merupakan low-level yang umumnya tidak perlu diketahui detailnya. Selanjutnya mari bahas secara garis besar tentang transaction models dan transaction design patterns.

TRANSACTION MODELS

  1. Local Transaction Model. transaction diatur oleh resource manager. Contoh penggunaan DBMS, maka DBMS sendiri yang mengatur transaction sedangkan developer mengatur connectionnya.
  2. Programmatic Transaction Model. transaction diatur menggunakan JTA. developer perlu menulis code untuk pengaturan transaction. menggunakan interface javax.transaction.UserTransaction, developer menggunakan method begin() (memulai transaction) dan commit() atau rollback() (mengakhiri transaction).
  3. Declarative Transaction Model. transaction diatur oleh framework/container. developer hanya perlu menyiapkan konfigurasi transaction misal melalui ApplicationContext.xml (Spring) atau ejb-jar.xml (EJB).

TRANSACTION DESIGN PATTERNS

  1. Client Owner. pengaturan transaction dilakukan di presentation layer. umumnya digunakan jika applikasi perlu melakukan remote akses ke backend service atau jika applikasi mengandung fine-grained service (terlalu banyak pemanggilan service layer code dalam sebuah proses transaction).
  2. Domain Service Owner. transaction design pattern yang digunakan pada umumnya. pengaturan transaction dilakukan melalui Domain Service.
  3. Server Delegate Owner. spesial case dari Domain Service Owner, mengandalkan Command Pattern atau Server Delegete Pattern dimana pengaturan transaction dilempar ke server dengan mengirim command.

Kira-kira itu yang bisa gw rangkum dalam tulisan ini. Lebih jauh, silakan download (http://www.infoq.com/books/JTDS) dan baca bukunya karena ternyata buku sebagus ini gratis (ebook-version).

Advertisements

Written by Henri H.

April 22, 2009 at 11:46 am

Posted in JAVA

Tagged with