Download Flat transaction

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Kelompok Advanced Enterprise Java Bean I
Chapter 10 dan 11
 Anthony Steven
 Anwar Chandra
 Edwin Richardo
 Hendrik GandaWijaya
 Johanes
 Yanuar Widjaja
Masalah
Suatu program yang menangani banyak
operasi yang terpisah namun saling terkait
sering kali menghadapi banyak kendala.
Kendala – kendala yang muncul itu tidak
jarang susah untuk diatasi jika makanisme
penanganan kesalahan dilakukan hanya secara
umum
Solusi
TRAN SACTIO N
Transaction adalah seri operasi yang
dijalankan sebagai satu kesatuan yang besar
namun memiliki atomic operation.Dengan
transaction, konsep all-or-nothing dapat
terjamin.
Jaminan Transaction
 Atomicity.
 Consistency.
 Isolation.
 Durability.
Jenis Transaction (1)
 Flat Transaction.
Flat transaction adalah suatu model
transaction yang paling sederhana. Flat
transaction adalah suatu adalah suatu seri
operasi yang dibentuk secara unti atomik
yang merupakan suatu untuk kerja sendiri.
Jenis Transaction (2)
 Nasted Transaction.
Nasted Transaction adalah suatu konsep
transaction yang memperbolehkan
pemrogram untuk menaruh/menambahkan
suatu unit atomic ke unit atomic lainnya.
Contained-managed Transactions
 Transaction Attributes
 The Different Between Transaction and Messages driven
beans
EJB Transactions Attribute Values
 Required
 Mandatory
 RequiresNew
 Not Supported
 Supports
 Never
Programmatic Transactions in EJB
 CORBA’s Object Transactions Services (OTS)
 Java Transaction Service (JTS)
 Java Transaction API (JTA)
Transactional Isolation
 Isolation merupakan suatu cara untuk menjamin agar
concurrent user ‘terisolasi’ walaupun mereka mengakses
database yang sama.
 Caranya adalah dengan ‘locking’. Maksudnya adalah akses ke
suatu database hanya bisa dilakukan oleh satu transaksi saja.
Transaksi berikutnya harus menunggu setelah lock dilepas.
 EXAMPLE??
 Isolation tersebut dapat kita atur sesuai kebutuhan kita. Inilah
yang dinamakan concurrency control.
Jenis Transactional Isolation
 READ UNCOMMITTED mode




tidak memberikan jaminan isolasi apapun(paling cepat)
READ COMMITTED mode
Menyelesaikan dirty read problem
REPEATABLE READ mode
Menyelesaikan masalah sebelumnya sekaligus
unrepeatable read problem
SERIALIZABLE
Menyelesaikan masalah sebelumnya sekaligus phantom
problem
EXAMPLE??
Beberapa istilah
 Dirty read problem
terjadi apabila aplikasi kita membaca data dari database yang
belum dicommit.
 Unrepeatable read problem
terjadi apabila ketika suatu aplikasi read data di database,
namun sewaktu ingin reread data tersebut, data tersebut telah
berubah.
 Phantom problem
Kumpulan data baru yang tiba-tiba muncul di database di
antara 2 operasi read database.
 EXAMPLE??
Tabel perbandingan transactional isolation
Isolation level Dirty reads
Unrepeatable
reads
Phantom read
Read
Yes
Uncommitted
Yes
Yes
Read
Committed
No
Yes
Yes
Repeatable
read
No
No
Yes
Serializable
No
No
No
Jenis Concurrency Control
 Pessimistic concurrency control
Suatu algoritma di mana kita berasumsi bahwa ketika kita
menggunakan lock dalam transaksi maka tidak akan ada
orang lain yang mengakses data tersebut sebelum locknya
dilepas
 Optimistic concurrency control
Kita berasumsi bahwa everything is OK sehingga tidak
diperlukan lock.
 Keuntungan VS Kerugian???
Distributed Transaction
 Distributed transaction merupakan transaksi yang
dilakukan oleh berbagai partisipan transaksi.
 Flat transaction yang paling dasar bisa dilakukan
dengan mengakaitkan 1 server aplikasi dengan 1
database.
 Distributed flat transaction memiliki sifat yang sama
dengan flat transaction yaitu 1 komponen dalam 1
transaksi membatalkan transaksi, maka semua
transaksi batal.
 Namun, perbedaannya adalah distributed flat
transaction memungkinkan berbagai partisipan
transaksi untuk bekerja sama dalam 1 transaksi.
Durability and two-phase commit protocol
 Durability menjamin semua resource updates yang dicommit





dibuat permanen.
Salah satu cara menjamin durability adalah dengan
mendaftarkan semua operasi di database sebelum dilakukan,
sehingga apabila terjadi crash, data bisa direcover.
Untuk melakukannya transaksi melewati 2 fase:
1. Mengirim before commit message ke semua resources yang
terlibat dalam transaksi.
2. Semua resources manager mengupdate data yang
sebenarnya.(hanya terjadi apabila no1 dilakukan tanpa ada
abort).
Inilah yang dinamakan two phase commit protocol(2PC).
Transactional communication
 Merupakan mekanisme komunikasi yang harus disetujui
transaction managers di dalam menjalankan 2PC.
 Transaction context merupakan object yang menampung
informasi tentang system’s current transactional state.
 Designing conversation conversation
 Method afterBegin()
 Method beforeCompletion()
 Method afterCompletion(boolean)
 Kapan method tersebut dipakai???
Cardinality
One-to-One relationship
One-to-Many relationship
Many-to-Many relationship
One-to-one relationship
 Definisi
 Contoh-contoh
orderPK
OrderName
ShipmentforeignPK
12345
Software order
10101
ShipmentPK
City
ZipCode
10101
Austin
23423
 Implementasi berdasarkan BMP
 EJB load method
 EJB store method
 Implementasi berdasarkan CMP
 EJB load
 Ejb store
1:Many relationship
companyPK
Name
12345
Middleware company
employeePK
Name
Sex
Company
20202
ED
M
12345
20203
Floyd
M
12345
 Implementasi BMP
 EjbLoad and EjbStore
 Implementasi CMP
Many-to-many relationship
 Fake M:N relationship
 True M:N relationship
StudentPK
StudentName
10101
JoeStudent
EnrollmentPK
StudentPK
CoursePK
12345
10101
20202
CoursePK
CourseName
20202
EJB
Directionality
Implementasi dengan BMP
Implementasi dengan CMP
Implementasi dengan BMP
// implementasi bidirectional
public class BeanPermintaan implements EntityBean{
private String permintaanPK;
private String namaPermintaan;
/* perhatikan kode dibawah ini, object penawaran yang harus
dikirim/diload */
private Penawaran penawaran;
public Penawaran getPenawaran(){return penawaran;}
public void setPenawaran(Penawaran p){this.penawaran = p;}
…………
}
public class BeanPenawaran implements EntiyBean{
private String penawaranPK;
private String namaPenawaran;
/* perhatikan kode dibawah ini, object yang harus dikirim/diload*/
private Permintaan permintaan;
public Permintaan getPermintaan(){return permintaan;}
public void setPermintaan(Permintaan p){this.permintaan = p;}
…………
}
Implementasi dengan BMP
// implementasi bidirectional
public class BeanPermintaan implements EntityBean{
private String permintaanPK;
private String namaPermintaan;
/* perhatikan kode dibawah ini, object penawaran yang harus
dikirim/diload */
private Penawaran penawaran;
public Penawaran getPenawaran(){return penawaran;}
public void setPenawaran(Penawaran p){this.penawaran = p;}
…………
}
public class BeanPenawaran implements EntiyBean{
private String penawaranPK;
private String namaPenawaran;
/* perhatikan kode dibawah ini, object yang harus dikirim/diload*/
private Permintaan permintaan;
public Permintaan getPermintaan(){return permintaan;}
public void setPermintaan(Permintaan p){this.permintaan = p;}
…………
}
Implementasi dengan BMP(2)
// Implementasi dengan unidirectional
public class BeanPermintaan implements EntiyBean{
private String permintaanPK;
private String namaPermintaan;
// perhatikan kode dibawah ini, object yang harus dikirim/diload
private Penawaran penawaran;
public Penawaran getPenawaran(){return penawaran;}
public void setPenawaran(Penawaran p){this.penawaran = p;}
…………
}
public class BeanPenawaran implements EntiyBean{
private String penawaranPK;
private String namaPenawaran;
// tidak ada penanda, method set/get dari permintaan disini
…………
}
Implementasi dengan CMP
// implementasi bidirectional
public abstract class BeanPermintaan implements EntityBean{
// no field
public abstract Penawaran getPenawaran();
public abstract void setPenawaran(Penawaran p);
………
public void ejbLoad(){}; // kosong
public void ejbStore(){}; // kosong
}
public abstract class BeanPenawaran implements EntityBean{
// no field
public abstract Permintaan getPermintaan();
public abstract void setPermintaan (Permintaan p);
………
public void ejbLoad(){}; // kosong
public void ejbStore(){}; // kosong
}
Two Kinds Of Entity Beans Loading :
 Aggressive Loading
Load all the other entity beans that has a relationship
with the one that is being loaded.
 Lazy Loading
Load the only related beans when we need to access
those beans
Coding Example : (Lazy Loading)
 public class OrderBean implements EntityBean{
– private String orderPK;
– private String orderName;
– private String shipmentFK; // Foreign Key to Shipment
– private Shipment shipment; // EJB Local Object Stub
public void ejbLoad(){
//1. SQL SELECT order, loading the shipment foreign
key
//2. Set shipmentFK field to the loaded key.
}
public shipment getShipment(){
// 1. JDNI lookup of Shipment Beans
// 2. Call
ShipmentHome.findPrimaryKey(shipmentFK)
return shipment;
}
// do something
}
Two Kinds of Relationships Within
Two Entity Beans :
 Aggregation
a Uses Relationship.
e.g: Student “Uses” courses, if the courses are
deleted…. the student didn’t dead also!
 Composition
a is-assembled-of Relationship.
e.g: Orders are assembled of line items. Deleting an
order deletes all line items.
Relationships and EJB-QL
When setting up CMP relationships, we can
also set up special queries using the EJB
Query Language (EJB-QL)
In this EJB-QL, we returning all customers that have placed
orders. We are navigating from the order entity bean to the
customer entity bean easily using a dot notation.
Therefore, a bean provider don’t need to know about table
or columns! They merely need to understand the
relationships between the entity beans they’ve authored.
Recursive Relationship
Recursive Relationship is one in which an
entity bean instance
has a relationship with another instance of
the same entity bean class.
Circular Relationship
Circular Relationship is similar to recursive
relationship except that it involves several
entity beans (not just a single entity).
Referential Integrity
Referential Integrity is the assurance that a
reference from one entity to another entity
is valid.
e.g :
Let’s say a company, department, and position each have a
relationships with an employee. If the employee removed, all
references to it must also be removed, or your system must not
allow the removal
Relationships, Referential Integrity,
and Client Code
There are many fascinating relationships
that also involves collection.
In a code that the container is responsible
for providing an implementation of the
Collection interface, a smart collection that
understands how to preserve referential
integrity behind the scenes is needed.