Advanced Enterprise Java Beans Concept I oleh: Ade Melani Lusiana Darmawan Suryamita Harindrari Pamela Indrajati Tirza Varananda Yoanna Widyanti Copyright ( Hak Cipta ) 2004 Silahkan menyalin, mengedarkan, dan / atau memodifikasi bagian dari dokumen ini tanpa mengubah nota hak ciptanya.
2 Agenda I. Transactions Transactions Motivation The ACID Properties Transaction Models Controlling Transactions Boundaries in EJB Choosing Transaction Style Transaction & Entity Bean Container-Managed Transaction Transaction & Message-Driven Bean Programmatic Transaction in EJB Transactional Isolation Concurrency Control Distributed Transaction: Durability and the Two-phase Commit Protocol Distributed Transaction: Transactional Communication Protocol and Transaction Context Designing Transactional Conversations in EJB
3 Transactions Motivation Apa yang mungkin terjadi pada sebuah database yang terhubung dengan beberapa application server ? Client Code Application Server Database
4 Transactions Motivation( cont. ) PPerhatikan kode di bawah : try { // Withdraw funds from account 1 } catch (Exception e) { // If an error occurred, do not proceed return; } try { // Otherwise, deposit funds into account 2 } catch (Exception e) { // If an error occurred, do not proceed, // and redeposit the funds back into account 1 return; } AApa yang salah dengan kode di atas ? Exception saja tidak cukup untuk Enterprise Computing
5 The ACID Properties Atomicity “All or nothing” Consistency - Menjamin konsistensi berdasarkan invarian - You don’t get consistency for free ! Isolation - Operasi pada data yang di-share diisolasi - Pilihan: safety atau concurrency ? Safety Concurrency Durability - Perubahan data disimpan di transactional log - Jika sistem crash, perubahan data tidak hilang sehingga dapat diperbaiki
6 Transactional Models Flat Transactions - Modifikasi data disimpan ke permanent storage jika transaksi diakhiri dengan commit - Jika terjadi problem semua transactional statement harus rollback Nested Transactions - Pohon transaksi dengan akar transaksi utama & cabang sub-transaksi - Sub-transaksi dapat rollback tanpa mempenga- ruhi bagian lain yang lebih tinggi - Sub-transaksi tidak bisa di-commit transaksi gagal
7 Controlling Transaction Boundaries in EJB Transaction Boundaries - Menandai awal dan akhir dari transaksi - Berisi command: Begin : mengawali transaksi baru Commit: menerapkan semua operasi / perubahan yang diinginkan dan mengakhiri transaksi Rollback: mengembalikan ke kondisi semula semua operasi/perubahan dan mengakhiri tran- saksi Dikontrol dengan: Programmatic Transactions - Bean code mengawali & mengakhiri transaksi - Bean membuat begin statement & commit atau abort statement - Hanya bekerja dengan session beans
8 Controlling Transaction Boundaries in EJB ( cont. ) Declarative Transactions - EJB Object mengawali & mengakhiri transaksi - EJB container yang membuat begin statement & commit atau abort statement Client-Initiated Transactions - Client-code mengawali & mengakhiri transaksi - Client – Server harus dekat - Dikontrol dengan JTA
9
10
11 Programmatic Transaction sangat rumit, menggunakan JTA Corba’s Object Transaction Service (OTS) Menspesifikasi transaksi yang berjalan di balik layar, API-nya terdiri dari JTS & JTA Java Transaction Service (JTS) Pada system-level vendor, tidak ditangani oleh programmer Java Transaction API (JTA) Terdiri atas 2 set interface,yaitu untuk resource manager & kontrol transaksi secara programmatic
12
13 Transactional Isolation 4 level Transactional Isolation dalam EJB: Read Uncommitted Mode Tidak menjamin isolasi, highest performance Read Committed Mode Solusi Dirty Read Problem Repeatable Read Mode Solusi Dirty Read dan Unrepeatable Read Problem Serializable Solusi Dirty Read, Unrepeatable Read, dan the Phantom Problem
14
15
16 Distributed Transaction ( cont. ) Transactional Communication Protocol and Transaction Context TTransactional Communication Mekanisme komunikasi standar dalam transaksi distributed two-phase commit TTransaction Context Object yang berisi informasi mengenai current transactional state suatu sistem SSpesifikasi EJB tidak mendukung distributed two - phase commit transaction
17 Agenda II. BMP & CMP Relationships Perbedaan antara CMP dan BMP Kardinalitas One-to-many (1:N) Relationship Many-to-many (M:N) Relationship Implementasi M:N Relationship Aggressive Loading & Lazy Loading OrderBean.java Aggregation vs Composition & Cascading Delete EJB-QL Recursive Relationships, Circular Relationships, and Referential Integrity
18 Perbedaan antara CMP dan BMP BMP me-manage relasinya di dalam bean itu sendiri CMP - Bagaimana relasi bekerja dideklarasi- kan dalam deployment descriptor - Kemudian kode-kode relasi yang dibutuhkan di-generate oleh container
19 Kardinalitas One-to-one (1:1) Relationship One-to-many (1:N) Relationship Many-to-many (M:N) Relationship
20 One-to-many (1:N) Relationship public abstract class CompanyBean implements EntityBean { // no fields public abstract Collection getEmployees() ; public abstract void setEmployees(Collection employees) ;... public void ejbLoad() {} // Empty public void ejbStore() {} // Empty } CMP
21 Many-to-many (M:N) Relationship Contoh: students:courses, people:websites Direpresentasikan sebagai suatu association table Association table berisi foreign key ke dua tabel yang lain Student Table Association Table Course Table StudentNoStudentName 10101Joe EnrollmentN o StudentNoCourseNo CourseNo CourseName E-commerce
22 Implementasi M:N Relationship Pilihan 1 : Fake the M:N relationship by introducing a third entity bean Membuat entity bean baru Menggunakan intermediary yang mempunyai dua 1:N relationship Memperkecil M:N relationship menjadi dua1:N relationship
23 Implementasi M:N Relationship ( cont. ) Pilihan 2 : Model the M:N relationship as a true M:N relationship Tidak perlu membuat entity bean baru Setiap entity bean merepresentasikan setengah relationship dan berisi Collection dari entity bean yang lain.
24 Implementasi M:N Relationship ( cont. ) Pendekatan secara fake lebih dipilih karena : 1. Membuat entity bean bersih. Semakin sedikit relationship code yang dimasukkan ke dalam entity bean, maka semakin reusable entity bean untuk dipakai dalam berbagai kondisi. 2.Kemiripan antara entity bean dan database sehingga proses mapping lebih mudah dilakukan.
25 Directionality Menerangkan arah untuk menavigasikan suatu relationship Berlaku untuk semua macam kardinalitas (1:1, 1:N, M:N) 1. Bidirectional ( Dua arah ) Bisa ke entity B dari entity A dan juga ke entity A dari entity B Entity A Entity B
26 Directionality ( cont. ) 2. Undirectional ( Satu arah ) Bisa ke entity B dari entity A, tapi tidak ke entity A dari entity B ( atau ke entity A dari entity B, tapi tidak sebaliknya ) Entity A Entity B Entity A
27 Aggressive Loading & Lazy Loading Aggressive Loading Saat me-load bean, maka semua yang mempu- nyai relationship itu juga di-load Lazy Loading Hanya me-load yang berhubungan dengan bean yang akan diakses
28 OrderBean.java
29 Aggregation vs Composition & Cascading Delete Aggregation contoh: murid yang mengikuti kursus Composition contoh: antrian tersusun dari sesuatu yang mengantri Cascading Delete - Aggregation tidak menyebabkan cascading delete - Compositon menyebabkan cascading delete
30 EJB-QL Perbedaan antara EJB-QL dan SQL: memungkinkannya memakai dot notation untuk relationship
31 Recursive Relationships, Circular Relationships, and Referential Integrity RRecursive Relationships Relationship dengan bean pada kelas yang sama CCircular Relationships Melibatkan beberapa bean RReferential Integrity Jaminan bahwa reference dari satu kesatuan ke kesatuan yang lainnya valid
32 QUESTIONS ?