BAB I PENDAHULUAN Dewasa ini pengembang – pengembang banyak membuat aplikasi transaksi yang terdistribusi untuk digunakan di perusahaan – perusahaan besar. Di era teknologi informasi yang ditandai dengan adanya tuntutan yang besar terhadap e-commerce, aplikasi - aplikasi enterprise harus didesign, dibangun dan diproduksi dengan biaya yang kecil dan pemanfaatan resource yang sedikit namun dengan hasil yang optimal. Dalam rangka mengurangi biaya dan untuk mengembangkan aplikasi yang cepat dan tepat, Java Enterprise Edition menyediakan pendekatan component- based untuk mendesign, mengembangkan dan mendeploy aplikasi – aplikasi enterprise. Java Enterprise Edition menawarkan model aplikasi multi tier terdistribusi, komponen yang dapat digunakan kembali, control transaksi yang lebih fleksibel dan dukungan web service melalui teknologi XML. Hal ini membawa dampak pengembang tidak hanya menghasilkan solusi – solusi bisnis yang innovative secara lebih cepat, tetapi juga solusi J2EE tidak terikat pada produk dan API dari vendor manapun. Vendor dan 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
BAB I
PENDAHULUAN
Dewasa ini pengembang – pengembang banyak membuat aplikasi
transaksi yang terdistribusi untuk digunakan di perusahaan – perusahaan besar.
Di era teknologi informasi yang ditandai dengan adanya tuntutan yang besar
terhadap e-commerce, aplikasi - aplikasi enterprise harus didesign, dibangun
dan diproduksi dengan biaya yang kecil dan pemanfaatan resource yang sedikit
namun dengan hasil yang optimal.
Dalam rangka mengurangi biaya dan untuk mengembangkan aplikasi yang
cepat dan tepat, Java Enterprise Edition menyediakan pendekatan component-
based untuk mendesign, mengembangkan dan mendeploy aplikasi – aplikasi
enterprise. Java Enterprise Edition menawarkan model aplikasi multi tier
terdistribusi, komponen yang dapat digunakan kembali, control transaksi yang
lebih fleksibel dan dukungan web service melalui teknologi XML. Hal ini
membawa dampak pengembang tidak hanya menghasilkan solusi – solusi bisnis
yang innovative secara lebih cepat, tetapi juga solusi J2EE tidak terikat pada
produk dan API dari vendor manapun. Vendor dan customer dapat memilih
produk dan komponen – komponen yang terbaik untuk bisnis dan persyaratan –
persyaratan teknis lainnya.
1.1. Aplikasi – Aplikasi Multitier Terdistribusi
J2EE menggunakan aplikasi multitier terdistribusi untuk membangun
aplikasi – aplikasi enterprise. Aplikasi logik dibagi ke dalam komponen –
komponen menurut fungsi, dan berbagai komponen aplikasi yang
menyusun aplikasi J2EE diinstall pada mesin – mesin yang berbeda menurut
tier dalam lingkungan J2EE multitier. Gambar 1.1 berikut ini menunjukkan
dua aplikasi – aplikasi multitier J2EE yang dibagi ke dalam tier.
Aplikasi J2EE yang ditunjukkan pada gambar 1.1 ini terbagi atas :
1
o Komponen client-tier yang berjalan pada sisi client
o Komponen web-tier yang berjalan pada server J2EE
o Komponen business-tier yang berjalan pada server J2EE
o Sistem informasi enterprise (EIS) yang berjalan pada EIS
Server
Meskipun aplikasi enterprise dapat terdiri atas tiga atau empat tier seperti
pada gambar 1.1, aplikasi – aplikasi multitier J2EE biasanya terdiri atas tiga tier
karena terdistribusi pada tiga lokasi yaitu client machine, server J2EE dan
database pada sisi back end.
Gambar 1.1 Aplikasi Multitier
1.2.Komponen J2EE
Aplikasi – aplikasi J2EE dibuat oleh komponen – komponen. Suatu
komponen J2EE adalah satuan perangkat lunak fungsional yang
dipasangkan dalam satu aplikasi J2EE dengan kelas – kelas dan file – file
dan yang berkomunikasi dengan component – komponen lainnya.
Komponen – komponen J2EE adalah sebagai berikut :
a. Aplikasi client dan applet adalah komponen – komponen yang
berjalan pada sisi client
2
b. Komponen – komponen teknologi java servlet dan javaserver pages
adalah web komponen yang berjalan pada server.
c. Komponen – komponen enterprise java beans adalah business
komponen yang berjalan pada server.
Komponen – komponen J2EE ditulis dalam bahasa java dan
dikompilasi dengan cara yang sama seperti bahasa program lainnya.
Perbedaan antara komponen J2EE dan class java standart adalah bahwa
komponen – komponen J2EE diasemble dalam satu aplikasi J2EE dan
dideploy untuk produksi dimana mereka dijalankan dan dimanage oleh
server J2EE.
1.3.J2EE Client
J2EE client dapat berupa suatu web client atau aplikasi client
1.3.1. Web Client
Web client terdiri atas dua bagian yaitu web page dinamis yang
berisi bermacam – macam markup language (HTML,XML dan lain –
lain), yang dihasilkan oleh bermacam – macam web komponen yang
berjalan pada web tier; dan web browser yang merender halaman –
halaman web yang diterima dari server.
Web client kadangkalanya disebut thin client. Thin client biasanya
tidak melakukan query terhadap database, mengekesekusi aturan – aturan
bisnis yang kompleks atau terhubung ke aplikasi – aplikasi yang legal.
1.3.2. Applet
Applet adalah aplikasi client yang ditulis dalam bahasa java yang
dieksekusi oleh java virtual machine yang terinstall pada web browser.
Olehya, client perlu java plug in supaya applet dapat dieksekusi oleh web
browser.
Komponen – komponen web adalah API terpilih untuk membuat
program web client karena tidak ada plug – in atau security policy files
3
yang dibutuhkan pada sisi client. Juga komponen – komponen web
memungkinkan design aplikasi secara lebih jelas dan modular karena
komponen – komponen web memberikan suatu cara untuk memisahkan
program – program aplikasi dari design halaman web.
1.3.3. Application Client
Application client berjalan pada client machine dan memberikan
fasilitas pada user untuk menangani tugas yang membutuhkan user
interface yang dapat disiapkan oleh satu markup language. Application
client mempunyai graphical user interface yang dibuat dari Swing atau
AWT API, namun memungkinkan juga menggunakan Command Line
Interface.
Application client secara langsung mengakses enterprise bean
yang berjalan pada business tier. Juga applikasi client dapat membuka
koneksi http untuk membangun komunikasi dengan servlet yang berjalan
pada web tier.
1.4.Komunikasi Server J2EE
Gambar 1.2 berikut ini menunjukkan berbagai elemen yang
membentuk client tier.
Gambar 1.2 Komunikasi Server
Client berkomunikasi dengan business tier yang berjalan pada server
J2EE baik secara langsung atau dalam hal client berjalan dalam satu web
4
browser adalah dengan menggunakan JSP atau Servlet yang berjalan di web
tier. Aplikasi J2EE dapat menggunakan thin browser-based client atau thick
application client. Mana yang akan digunakan, tergantung pada
pertimbangan antara mempertahankan fungsi pada client dan dekat ke user
dan mengurangi beban server sekecil mungkin. Semakin kecil beban server,
semakin mudah untuk mendistribusikan, mendeploy dan mengelola aplikasi
1.5.Komponen – Komponen Web dan Bisnis
Komponen – komponen web dapat berupa servlet atau JSP. Servlet
adalah class – class dari bahasa pemrograman java yang secara dinamis
memproses request dan membentuk response. Halaman – halaman JSP
adalah dokumen teks yng mengeksekusi servlet tetapi memungkinkan
pendekatan natural untuk membuat static content.
Halaman – halaman statis html dan applet digabung dengan
komponen – komponen web selama aplikasi disusun tetapi bukan
merupakan web komponen. Class – class utilitas pada sisi server dapat juga
digabungkan dengan komponen – komponen web dan seperti halaman –
halaman HTML class – class ini tidak dianggap sebagai web komponen.
Seperti terlihat pada gambar 1.3 berikut ini, web tier seperti client tier,
dapat meliputi komponen java bean untuk mengelola masukan user dan
mengirimkan input ke enterprise bean yang berjalan pada bisnis tier untuk
diproses.
Gambar 1.3 Lapisan Web dan Aplikasi J2EE
5
Kode Binis yang merupakan logika untuk memecahkan kebutuhan
domain bisnis tertentu seperti bank atau perusahaan financial lainnya
ditangani oleh enterprise bean yang berjalan pada bisnis tier. Gambar 1-4
berikut ini menunjukan bagaimana enterprise bean menerima data dari
client, memproses data tersebut jika perlu dan mengirimkannya ke sistem
informasi enterprise untuk penyimpanan. Enterprise bean juga mengambil
data dari penyimpanan, memprosesnya dan mengembalikan ke client.
Gambar 1.4 Lapisan Bisnis dan Sistem Informasi Enterprise
Ada tiga jenis enterprise bean : session bean, entity beans dan
message-driven bean. Session bean menunjukkan suatu percakapan transient
dengan seorang client. Ketika client selesai mengeksekusi, session bean dan
datanya lenyap.Sebaliknya entity bean menunjukan secara persistent data
disimpan dalam satu baris table di suatu database. Jika client berhenti atau
server mati, data entity bean tersimpan. Message-driven bean
mengkombinasikan ciri yang dimiliki oleh session bean dan java message
service (JMS) listener, yang mengijinkan satu komponen bisnis menerima
pesan pesan JMS secara asinkron.
1.6.J2EE Container
Pada dasarnya aplikasi – aplikasi multitier thin-client sulit dalam
pembuatannya karena meliputi banyak baris kode untuk menangani
6
transaksi, multithreading, resource pooling dan uraian kompleks lainnya.
Arsitektur J2EE menjadikan aplikasi J2EE mudah untuk dibuat karena
logika bisnis disusun dalam komponen – komponen yang dapat digunakan
kembali. Sebagai tambahan server J2EE menyediakan layanan penting
dalam bentuk satu container untuk setiap tipe komponen. Karena kita tidak
harus mengembangkan layanan – layanan ini, maka konsentrasi kita hanya
pada bagaimana memcahkan persoalan – persoalan bisnis.
1.6.1. Container Services
Container adalah interface antara satu komponen dan
platform tertentu pada tingkat rendah yang mendukung komponen
tersebut. Sebelum web komponen, enterprise bean atau komponen
aplikasi client dapat dieksekusi, kompoenen tersebut harus
dipasang dalam satu module J2EE dan dideploy dalam
kontainernya.
Proses pemasangan mencakup penyetingan container tertentu
untuk setiap komponen dalam aplikasi J2EE dan untuk aplikasi
J2EE sendiri. Penyetingan container mengkustomasi pendukung –
pendukung utama yang disediakan server J2EE mencakup
kemaanan, management transaksi, Java Naming and Directory
Interface dan konektivitas remote
Karena arsitektur J2EE menyediakan layanan yang dapat
dikonfigurasi, komponen – komponen aplikasi dalam aplikasi J2EE
yang sama dapat bertindak secara berbeda berdasarkan dimana
mereka dideploy. Sebagai contoh suatu enterprise bean dapat
mempunyai penyetingan keamanan yang mengijinkannya
mengakses database pada satu lingkungan produksi dan akses
database lain pada lingkungan produksi lainnya.
7
1.6.2. Tipe – Tipe Container
Proses deployment menginstall komponen – komponen
aplikasi J2EE dalam container J2EE seperti digambarkan pada
gambar 1.5.
J2EE Server; menyediakan container Enterprise Java Bean dan
if(cNama.equals(cookieMember)){ dis = request.getRequestDispatcher("/member.jsp"); } else { dis = request.getRequestDispatcher("/index.jsp"); out.println("Anda Belum Login Sebagai Member!!"); } dis.include(request, response); } finally { out.close(); } }Di servlet MemberPage ini program akan mengecek lagi validitas dari client.
Mengapa kit cek lagi validitas clientnya ? Untuk mencegah client non-
member yang ingin masuk ke halaman member tanpa mekanisme login
terlebih dahulu. Program akan mengecek semua cookie pada client . Jika ada
cookie dengan nama ckieNama, selanjutnya akan diperiksa isi cookie
tersebut.
o Jika isi cookieNama adalah konstanta cookieMember maka client akan
diarahkan ke halaman khusus member (member.jsp)
o Jika isi cookie ckieNama bukan konstanta cookieMember maka client
akan diarahkan ke halaman index.jsp dengan peringatan “Anda belum
login sebagai member”.
6. Build dan Run project. Masuklah sebagai member. Ketik username dan
password “member”.
35
Gambar 4.1. Login sebagai member
7. Jika login benar akan muncul tampilan berikut :
8. Klik link-nya kita akan masuk ke halaman member.
9. Kita sudah masuk sebagai member. Kita coba untuk langsung mengakses
halaman member tanpa melalui mekanisme login. Buka tab baru dan
ketikkan url berikut :
http://localhost:8084/DemoCookie/member
10. Hasilnya kita akan tetap bisa mengakses halaman khusus member. Tetapi
cobalah membuka browser lain dan masuk langsung ke halaman khusus
String password = request.getParameter("pass"); if(username.equals("member") && password.equals("member")){ session.setAttribute("user",username); dis = request.getRequestDispatcher("/member.jsp"); dis.forward(request, response); }else{ dis = request.getRequestDispatcher("/index.jsp"); out.println("Login Salah!!"); dis.include(request, response); out.close(); } }4. Buat lagi sebuah servlet untuk mengakhiri session dan beri nama
LogoutServlet. Kita akan mengecek validitas session-nya. Ketik kode
3. Tidak seperti bab sebelumnya, dimana kita menggunakan servlet untuk
memproses input. Kali ini proses penjumlahan akan kita lakukan di
dalam JSP.
4. Karena proses penjumlahan ini memungkinkan terjadi exception semisal
input bukanlah angka, maka perlu kita buat error-page. Klik kanan pada
web pages di tab project pilih New > JSP. Beri nama file : error dan
klik finish. Ketik kode berikut pada error.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
int angka2 = Integer.parseInt(angka2str); int hasil = angka1 + angka2; %> <h3>Hasil dari <%=angka1%> + <%=angka2%> adalah <%=hasil%></h3> </body></html>
Program akan mengambil angka 1 dan angka 2 kemudian di parse ke tipe data
integer. Kedua angka tersebut dijumlahkan dan hasilnya akan ditampilkan. Kita
daftarkan error-page menggunakan page directive errorPage
<%@page errorPage=”/error.jsp” %>
JSP container akan mengarahkan ke halaman error.jsp bila terjadi exception di
halaman result.jsp ini
7. Build dan jalankan program dan coba masukkan angka numeric terlebih
dahulu
Gambar 7.4. Memasukkan angka numerik
8. Klik back pada web browser dan coba masukkan input bukan angka.
9. Hasilnya adalah error. User diarahkan ke error.jsp
RANGKUMAN
JSP bertujuan memisahkan business logic dengan presentation/tampilan. JSP dibuat
untuk menyederhanakan proses presentation halaman web
Kelemahan servlet ada dalam pembuatan halaman web. Servlet harus mengirimakan
code html sebagai code java sehingga proses pengiriman akan menjadi lebih lama.
62
Kelebihan JSP adalah codingnya sama dengan HTML namun bercampur dengan tag
script JSP. JSP lebih mudah dipakai untuk membuat halaman web yang cantik.
JSP merupakan perluasan dari servlet dimana ketika JSP dijalankan maka akan
dikompilasi menjadi servlet terlebih dahulu
JSP memiliki siklus hidup dan siklus hidup JSP mirip seperti servlet terdiri atas 3
tahap, yaitu init, service dan destroy
Secara garis besar, elemen – elemen standar dalam JSP bila dikelompokkan menjadi
3, yaitu :Elemen perintah (Directive),Elemen scripting dan Elemen action
Elemen directive merupakan elemen yang memberikan informasi mengenai halaman
JSP itu sendiri
Elemen scripting mengizinkan code java untuk dimasukkan dalam halaman JSP
Elemen action merespon action berdasarkan informasi yang diperlukan halaman JSP
LATIHAN SOAL
1. Berikan perbedaan antara JSP dan Servlet. Berikan keuntungan dan kelemahannya
masing – masing !
2. Jelaskan dengan menggunakan bagan cara kerja dari JSP !
3. Apakah yang dimaksud dengan siklus hidup JSP. Jelaskan dengan menggunakan
gambar ?
4. Jelaskan elemen – elemen dasar dari JSP !
5. Buatlah JSP page yang digunakan untuk mengautentikasi user. User hanya bisa masuk ke
halaman utama apabila nama dan passwordnya sama serta memiliki jumlah karakter
lebih dari delapan !
63
BAB VIII
JSP LANJUT
8.1. Expression Language
Expression Language dapat digunakan untuk menggantikan elemen
scripting guna mempermudah penulisan ekspresi dalam halaman JSP.
Expression Language diperkenalkan dengan spesifikasi JSP 2.0
Expression Language memiliki bentuk yang lebih sederhana dan
ditulis dengan syntax : ${Expression}. Sebagai gambaran bagaimana
sederhanaya penggunaan expression language, jika itu menggunakan
elemen scripting atau elemen action kita akan menulis syntax seperti ini :
<% String name = user.getName ( ); %>
atau
<jsp:getProperty name = “user” property=”name” />
Namun dengan expression language penulisan syntax hanya seperti ini :
${user.name}
Perhatikan, jika kita menggunakan elemen scripting kita juga harus
memahami property dari tipe data di Java. Dan jika kita menggunakan
elemen action ini, penulisannya cukup panjang dan susah. Bandingkan jika
kita menggunakan Expression Language penulisannya singkat dan
langsung pada intinya dan kita tidak harus memahami property dan tipe
data di java.
Halaman JSP bisa dibuat tanpa scripting dengan menggunakan
expression language, sehingga memungkinkan pemisahan antara
programmer dengan web designer. Hal ini sesuai dengan tujuan JSP, yaitu
memisahkan antara presentation dengan business logic. Expression
language bisa berupa literal, operator, object implicit ataupun fungsi.
64
8.1.1 Literal
Expression language mendefinisikan literal berupa
o Boolean
o Long
o Float
o String
o Null
Contoh expression language berupa literal :
${false} hasilnya adalah false
${1+2+3} hasilnya adalah 6
${“Saya ganteng”} hasilnya adalah string “Saya ganteng”
8.1.2 Operator
Expression language menyediakan operator berikut :
o Aritmetika : -, bianary, *, / dan div, % dan mod, unary
o Logika : and, &&,or,||,not,!
o Relational : ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le
Perbandingan dapat dilakukan terhadap nilai – nilai lain atau
terhadap Boolean, string, integer, atau literal floating point
o Empty : Operator kosong adalah prefix yang digunakan untuk
menentukan apakah suatu nilai adalah null atau kosong
o Kondisional : A ? B : C. Jika A true maka hasilnya B, Jika A false
maka hasilnya C
o Referensi: .,// Referensi berdasarkan property atau index.
Contoh : ${user,nama} sama dengan ${user[name]}
8.1.3 Object Implisit
65
Expression Language mendefinisikan sekumpulan object implicit
yaitu
o Object pageContext merupakan context untuk halaman JSP.
Menyediakan akses ke berbagai objek, termasuk servletContext,
session, request, response.
o Object Param; Object map yang berisi request nama parameter
untuk nilai tunggal
o Object ParamValues; Object map yang berisi request nama
parameter untuk array
o ObjectHeader; Object map yang berisi request nama header untuk
nilai tunggal
o ObjectHeaderValues; Object map yang berisi request nama header
untuk array
o Object Cookie; Object map yang berisi nama – nama cookie
o Object InitParam; Peta suatu context inisialisasi nama parameter
Expression Language menyediakan beberapa object implicit yang
mewakili sebuah object Map di dalam jangkauan yang berbeda.
o Object PageScope; Object map yang berisi nama attribute dan
nilainya dalam jangkauan halaman
o Object RequestScope; Object map yang berisi nama attribute dan
nilainya dalam jangkauan request
o Object SessionScope; Object map yang berisi nama attribute dan
nilainya dalam jangkauan session
o ObjectApplicationScope; Object map yang berisi nama attribute
dan nilainya dalam jangkauan application
8.2. JSTL
66
Java Server Pages Standart Tag Library (JSTL) adalah library yang
menyediakan fungsi – fungsi dasar yang umumnya ada pada JSP. JSTL
memiliki tag – tag seperti untuk perulangan, kondisi, manipulasi XML,
mengakses database dan sebagainya.
Penggunaan JSTL dimaksudkan untuk mengurangi penggunaan
fungsi – fungsi standart java sehingga memungkinkan menulis kode JSP
yang rumit tanpa menggunakan code java.
JSTL memiliki berbagai variasi tag sesuai fungsinya masing –
masing. Untuk menggunakan library – library JSTL, kita mengimpor dari
beberapa URI-nya. Kategorisasi dari tag – tag JSTL adalah Core, XML,
Internationalization, SQL dan functions.
Untuk menyertakan halaman JSTL didalama halaman JSP, kita harus
menyertakan library JSTL serta menuliskan taglib di dalam halaman JSP.
1. Apakah yang dimaksud dengan expression language ? Apakah yang membedakannya dengan jsp ?
2. Jelaskan objek – objek implicit yang dikandung oleh expression language !3. Apakah manfaat dari Java Server Pages Standart Tag Library (JSTL) ?4. Dengan menggunakan expression language buatlah java web yang dapat digunakan
untuk membandingkan 2 buah string yang diinput oleh user melalui input form !5. Buatlah program menggunakan expression language yang dapat digunakan untuk
menentukan apakah bilangan yang diinput user ganjil atau genap !
BAB IX
MODEL – VIEW – CONTROLLER
Sering kali antara business logic dan user interface digabung dalam satu
file yang sama ( servlet atau jsp) atau disebut dengan arsitektur model 1. Hal ini
tidak menjadi masalah jika diterapkan pada aplikasi yang sederhana. Tapi jika
aplikasi menjadi besar dan kompleks, akan menimbulkan masalah jika terjadi
perubahan pada salah satu komponennya. Solusi permasalahan ini adalah
menggunakan arsitektur model 2 atau Model – View – Controller(MVC) dalam
pengembangannya.
9.1. MVC
MVC merupakan konsep arsitektur aplikasi yang memisahkan
model data, user interface dan business logic sebagai komponen yang
berbeda sehingga modifikasi komponen menjadi lebih mudah.
Pada aplikasi dimana code user interface tergabung dengan business
logicnya, jika terjadi perubahan pada user interface atau business logic
maka keduanya akan salaing mempengaruhi. Misalnya sebuah file jsp
dimana berisi code user interface dan business logic untuk mengakses
database. Ketika kita ingin mengubah user interfacenya, maka business
logicnya juga harus ikut menyesuaikan,. Itu berarti kita harus merombak
seluruh kode dalam file jsp tersebut, yang tentunya akan sangat
merepotkan.
73
Disamping itu tidak semua programmer bisa melakukan desain atau
sebaliknya, seorang desainer web belum tentu bisa melakukan
pemrograman. Jika user interface dan business logic digabung maka
diperlukan orang yang bisa melakukan program dan desain. Akan tetapi
jika aplikasi terlalu besar akan sangat menyulitkan.
Perubahan yang terjadi pada komponen yang satu tidak akan terlalu
mempengaruhi komponen lainnya secara significant. Paling tidak dengan
memakai arsitektur MVC, memerlukan lebih sedikit penyesuaian jika
terjadi perubahan. Selain itu seorang desainer bisa focus pada user
interface aplikasi dan programmer bisa focus pada business logicnya.
Untuk aplikasi yang besar, penerapan MVC akan sangat membantu
maintenance atau pengembangan yang selanjutnya. Misal jika hanya
aplikasi web apalagi dengan halaman yang statis, tidak perlu menggunakan
pola MVC ini. Tetapi untuk aplikasi yang besar misal aplikasi ERP, maka
penggunaan kosnsep MVC akan sangat membantu sekali.
9.2. Komponen MVC
Arsitektur MVC membagi aplikasi menjadi 3 bagian besar, yaitu
model, view, controller dan kemudian membuat interaksi antar ketiganya.
9.2.1. Model
Model merepresentasikan data yang digunakan oleh aplikasi.
Dengan pemisahan antara data dan interface, komponen model dapat
digunakan kembali oleh bagian aplikasi lain yang memiliki
kegunaan yang sama. Mungkin kita pernah mengakses situs berita
dengan browser desktop atau browser mobile. Yang berbeda dari
keduanya hanyalah tampilannya, tetapi business logic yang
digunakan tetap sama. Ini menunjukkan bahwa dengan pemisahan
seperti ini, berarti interface tidak terikat dengan data, sehingga apa
pun interfacenya data yang digunakan bisa sama. Umumnya
komponen model berupa class java.
74
9.2.2. View
View merupakan implementasi user interface yang
menampilkan data yang telah diolah pada user, atau komponen yang
akan berinteraksi dengan user. View ini termasuk komponen yang
paling sering berubah. Bahkan pada aplikasi web yang canggih biasa
dimodifikasi sendiri oleh user tanpa mempengaruhi business logic
dari aplikasi. Umumnya komponen view berupa halaman jsp.
9.2.3. Controller
Controller merupakan pengontrol aliran request. Data request
akan diteruskan ke komponen lain yang mengolah data. Controller
juga menentukan komponen aplikasi manakah yang akan dieksekusi,
serta menentukan transisi view mana yang akan ditampilkan.
Dengan penggunaan komponen controller yang terpisah ini, view
dapat didesain tanpa harus memperhatikan komponen lainnya.
Umumnya komponen controller berupa servlet.
9.3. Framework MVC
Ada banyak framework yang dibuat berbasis arsitektur MVC.
Beberapa diantaranya adalah Spring dan Struts . Framework menyediakan
sarana untuk mengimplementasikan ketiga komponen MVC
(model,view,controller) secara mudah pada aplikasi web. Beberapa
framework lain bahkan menyediakan fitur lainnya.
9.3.1. Spring
Spring adalah application framework lightweight untuk
mempermudah pengembangan aplikasi heavyweight java.
Penggunaan Spring tidak hanya terbatas pada aplikasi berbasis web
tetapi juga untuk aplikasi java yang lain.
Didalam situs resmi spring dikatakan “Spring memberikan
solusi lightweight untuk pengembangan aplikasi enterprise, serta
tetap mendukung kemungkinan penggunaan declarative
75
Spring Core
SpringAOP
SpringWebMVC
Spring ORM Spring Web
Spring DAO Spring Context
transaction, remote access dengan menggunakan RMI ataupun web
service, fasilitas mailing serta dukungan ke teknologi presistance
yang telah ada. Spring menyediakan sebuah framework MVC, serta
tata cara yang transparan dalam integrasi Aspect oriented
Programming (AOP) ke dalam aplikasi yang dibangun, dan
menyediakan hirarki exception yang terstruktur. Spring dapat
menjadi one-stop-solution untuk pengembangan aplikasi enterprise
java, tetapi Spring juga bersifat modular sehingga developer dapat
mengambil beberapa modul dan mengabaikan modul lainnya”.
Seperti yang telah disinggung diatas, Sprint terdiri dari
beberapa modul yang dapat dipilih, sehingga kita dapat memilih
sesuai kebutuhan aplikasi yang kita kembangkan. Modul – modul
Spring dapat digambarkan seperti gambar berikut ini
Gambar 9.1 Susunan Modul Spring Framework
Penjelasan singkat untuk masing – masing modul adalah
sebagai berikut :
Spring Core; menyediakan sarana fungsionalitas yang
fundamental dalam Spring Framework. Dalam modul ini
terdapat beanfactory yang merupakan inti dari aplikasi yang
menggunakan Spring.
Spring Context; modul ini merupakan ekstensi dari
BeanFactory dengan menambahkan dukungan untuk
76
internalization, event-event dari siklus hidup aplikasi serta
validasi. Modul ini juga menydeiakan service enterprise seperti
email, akses JNDI, integrasi dengan EJB, remoting dan
penjadwalan, serta integrasi dengan velocity dan freemarker.
Spring AOP; modul ini menyediakan layanan penuh pada
Aspect Oriented Programming (AOP)
Spring DAO; modul ini menyediakan abstraksi ke JDBC dan
DAO, sehingga pemrograman dengan kedua komponen
tersebut menjadi lebih sederhana dan mudah.
Spring ORM; modul ini menyediakan integrasi dengan
beberapa Object Relational Mapping (ORM) yang popular saat
ini seperti Hibeernate, JDO,Ibatis,SQL Maps, Oracle TopLink
Spring Web; modul integrasi menyediakan context yang
ditujukan untuk aplikasi berbasis web, dan juga integrasi
dengan framework seperti Jakarta Struts, Tapestry,dan
WebWork
SpringMVC Framework
Gambar 4.2 diatas pada dasarnya merupakan pembagian
secara koseptual. Pada kenyataannya sebuah modul dapat tersusun
dari satu atau beberapa package. Package – package yang terdapat
dalam org.springframework terdiri dari aop, beans, chace, context,
Servlet GoTutorial akan melihat target dalam parameter “type” kemudian
akan diteruskan ke halaman jsp sesuai isi parameter type tersebut.
9. Build dan run program dan kemudian klik salah satu link.
Gambar 9.4. Halaman index MVC
10.Lihat url hasilnya kemudian coba isi parameter type “web”. Program
akan mengarahkan langsung ke halaman web.jsp
RANGKUMAN
MVC merupakan konsep arsitektur aplikasi yang memisahkan model data, user interface
dan business logic sebagai komponen yang berbeda sehingga modifikasi komponen
menjadi lebih mudah.
Arsitektur MVC membagi aplikasi menjadi 3 bagian besar, yaitu model, view, controller
dan kemudian membuat interaksi antar ketiganya
Model merepresentasikan data yang digunakan oleh aplikasi dan umumnya berupa java
class
View merupakan implementasi user interface yang menampilkan data yang telah diolah
pada user, atau komponen yang akan berinteraksi dengan user dan umumnya berupa jsp
Controller merupakan pengontrol aliran request dan umumnya berupa servlet
83
LATIHAN SOAL
1. Jelaskan manfaat penggunaan konsep MVC dalam pengembangan aplikasi berskala
enterprise !
2. Bagaimana konsep modeling diterjemahkan dalam kerangka MVC !
3. Bagaimana konsep view digunakan dalam MVC !
4. Buatlah aplikasi penjualan barang secara online menggunakan konsep MVC.
Kembangkan java class yang akan digunakan, halaman jsp dan servlet untuk aplikasi
ini !
BAB X
DATABASE , SQL DAN JDBC
Untuk membuat aplikasi web berskala enterprise, belum lengkap
rasanya jika tanpa koneksi ke database.
10.1. Database
Database atau basis data adalah kumpulan data yang disimpan
secara sistematik sehingga dapat diakses untuk memperoleh informasi
dari database tersebut.Database ini misalnya seperti buku telepon di mana
kita mencatat nama dan nomor telepon seseorang.
Database yang dimaksud disini, tentunya adalah data yang
disimpan dalam computer, yang dikelola menggunakan perangkat lunak
khusus yang disebut dengan Database Management System (DBMS).
Sebuah database memiliki penjelasan terstruktur dari data yang tersimpan
di dalamnya yang disebut dengan skema. Skema menggambarkan objek
yang diwakili suatu database, dan hubungan diantara objek tersebut. Cara
mengorganisasikan skema umumnya menggunakan model relational yanr
tabeg direpresentasikan dalam bentuk table, yang terdiri atas baris dan
kolom. Dalam model ini, hubungan antara table diwakili dengan nilai
yang sama antar table.
84
10.2. SQL
SQL adalah standar ANSI untuk mengakses dan memanipulasi
database. Statemen SQL digunakan untuk menerima, mengubah dan
menghapus data. Perintah SQL tidak bersifat case sensitive pada kata
kuncinya, tetapi pada nilainya.
Pada aplikasi yang membutuhkan akses ke database, umumnya
akan melakukan aksi – aksi seperti memasukkan data, mengambil data
mengupdate dan menghapus data.
10.2.1. Memasukkan Data
Untuk memasukkan baris data yang baru ke dalam table
database yang aktif, kita menggunakan perintah INSERT. Struktur
dasar dari perintah INSERT :
INSERT INTO nama_tabel VALUES (nilai1,nilai2,…)
Clause INTO diikuti nama dari table yang akan diisi data baru.
Parameter yang diberikan di dalam kata kunci VALUES adalah daftar
nilai data yang akan dimasukkan ke dalam table.
Perintah INSERT harus diikuti aturan integritas pada table data. Oleh
karena itu jika sebuah field pada table ditetapkan not-null, maka jika kita
mencoba memasukkan nilai null, akan menyebabkan error.
10.2.2 Mengambil Data
Untuk mengambil data dari database yang aktif, kita menggunakan
perintah SELECT. Struktur dasar perintah SELECT :
SELECT kolom1,kolom2,…FROM nama_tabel WHERE kondisi
Perintah SELECT diikuti oleh kolom – kolom table yang akan diambil
datanya. Jika kita ingin mengambil semua data dari seluruh kolom pada
table, gunakan * sebagai pengganti nama kolom. Clausa FROM diikuti
nama tabelnya. Claus WHERE dapat disertakan dan diikuti dengan
kondisi data yang ingin diambil.
85
10.2.3 Meng-update Data
Untuk mengupdate baris data dari table database yang aktif, kita
menggunakan perintah UPDATE. Struktur dasar perintah UPDATE :
UPDATE nama_tabel SET nilai-kolom WHERE kondisi
Perintah UPDATE diikuti oleh nama table yang ingin di-update
datanya. Clause SET diikuti daftar data dari nama kolom dan nilai
barunya. Clausa WHERE harus disertakan jika kita hanya mengupdate
baris data tertentu. Jika tidak, semua baris data akan ikut terupdate.
10.2.4 Menghapus Data
Untuk menghapus baris data dati table database yang aktif, kita
menggunakan perintah DELETE. Struktur dasar perintah DELETE :
DELETE FROM nama_table WHERE kondisi
Clause FROM diikuti oleh nama table yang ingin di-update
datanya. Clause WHERE harus disertakan jika kita hanya menghapus
baris data tertentu. Jika tidak, semua baris data akan ikut terhapus.
10.3. JDBC
Java menyediakan API untuk mengakses database yang disebut
Java Database Connectivity (JDBC) API. Dengan JDBC, kita bisa
mengakses database tanpa mempedulikan DBMS-nya.
JDBC API memungkinkan untuk melakukan tiga hal, yaitu
membuat koneksi dengan database, mengirim perintah SQL, dan
memproses hasil.
Setiap mengakses database,kita menggunakan JDBC driver sebagai
interface atau koneksi ke database tersebut. Setiap vendor DBMS
memerlukan driver yang berbeda. Untuk beberapa vendor telah tersedia
86
drivernya didalam JDBC API, sedangkan yang tidak ada bisa
didownload pada website vendor masing – masing.
10.4. Membuat Database
Untuk membuat database kita bisa menggunakan netbeans seperti
yang akan dicontohkan berikut ini. Database yang akan dibuat terdiri
atas dua table dengan struktur sebagai berikut :
Tabel Subject
Field Type
Kode Varchar(4)
Nama Varchar(10)
SKS int
Tabel Mahasiswa
Field Type
Nis Varchar(10)
Nama Varchar(40)
Alama
t
Varchar(40)
Tabel Jadwal
Field Type
Nis Varchar(10)
Kode Varchar(4)
Langkah – langkah pembuatannya adalah sebagai berikut :
1. Buka aplikasi Netbeans. Klik tab Services
87
2. Buat database baru. Klik databases dalam tab services. Klik kanan Mysql
Server > Create database. Jika Mysql belum berjalan, jalankan terlebih
dahulu,pilih Start
Gambar 10.1. Membuat database baru
3. Isikan nama database Akademik hingga diperoleh tampilan sbb :
Gambar 10.2. Database Akademik telah dibuat
4. Buat table – tablenya . Klik kanan pada akademik > Execute Command.
Hasilnya akan nampak seperti gambar berikut ini :
88
Gambar 10.3. Database Akademik dengan tabel
RANGKUMAN
Database adalah kumpulan table – table yang menyimpan data dan telah memenuhi
aturan tertentu (ternormalisasi)
Untuk membuat, mengakses dan memanipulasi data – data yang tersimpan dalam satu
database digunakan bahasa yaitu SQL.
Structured Query Language (SQL) terbagi atas Data Definition Language (DDL) dan
Data Manipulation Language (DML).
DDL terdiri atas perintah CREATE, DROP dan ALTER.
DML terdiri atas perintah INSERT, SELECT, UPDATE, dan DELETE.
CREATE digunakan untuk membuat table. DROP digunakan menghapus table dari
satu database. ALTER digunakan untuk memodifikasi table.
INSERT digunakan menambahkan record dalam satu table.
SELECT digunakan untuk mengquery record tertentu dari satu database berdasarkan
kondisi tertentu
UPDATE digunakan untuk mengupdate record tertentu berdasarkan criteria tertentu.
DELETE digunakan untuk menghapus baris tetentu dari satu table.
Java menyediakan API untuk mengakses database yang disebut Java Database
Connectivity (JDBC) API. Dengan JDBC, kita bisa mengakses database tanpa
mempedulikan DBMS-nya.
LATIHAN SOAL
1. Apa yang dimaksud dengan database, jelaskan !2. Jelaskan perintah – perintah yang tergabung dalam kelompok SQL DDL ! 3. Apa yang dimaksud dengan JDBC dan kapan JDBC digunakan ?4. Dengan menggunakan netbeans dan Mysql buatlah database yang memiliki table – table
seperti dibawah ini :Tabel Barang
Nama Field Tipe Data
Kode_Baran
g
Varchar(4)
Nama Varchar(30)
89
Harga int
Tabel Customer
Nama Field Tipe Data
Kode_Cus Varchar(4)
Nama_Cus Varchar(30)
Alamat Varchar(20)
Phone Varchar(20
Tabel Transaksi
Nama Field Tipe Data
Kode_Cus Varchar(4)
Kode_Barang Varchar(4)
BAB XI
ENTERPRISE BEANS
Enterprise beans adalah komponen java enterprise edition yang
mengimplementasikan teknologi enterprise javabeans (EJB). Enterprise beans
berjalan dalam EJB container yang ada dalam application server. Meskipun
transparent terrhadap pengembangan aplikasi, container EJB memberikan
layanan terhadap sistem seperti transaksi dan keamanan bagi enterprise
beannya. Layanan ini memungkinkan kita untuk membangun dan mendeploy
enterprise beans secara cepat yang merupakan bentuk inti dari aplikasi java EE.
11.1. Apa itu Enterprise Bean
Ditulis dengan bahasa pemrograman java, enterprise bean adalah
komponen pada sisi server yang membungkus business logic dari suatu
aplikasi. Business logic adalah kode yang memenuhi maksud dari
aplikasi. Sebagai contoh dalam suatu aplikasi inventory, enterprise bean
mengimplementasikan business logic dalam method yang disebut
checkInventoryLevel dan orderProduct. Dengan menginvoke method –
90
method ini, client dapat mengakses layanan inventory yang disediakan
oleh aplikasi.
Enterprise beans menyederhanakan pengembangan aplikasi –
aplikasi yang besar dan terdistribusi. Pertama karena container EJB
menyediakan layanan – layanan system-level ke enterprise bean seperti
management transaksi dan securitas , pengembang bean dapat
berkonsentrasi dalam memecahkan masalah – masalah business. Kedua
karena bean berisikan business logic dari aplikasi, pengembang pada sisi
client dapat focus pada client. Pengembang client tidak harus
mengkoding rutin untuk mengimplementasikan business rule atau
mengakses database. Hal ini menyebabkan, client menjadi lebih kecil dan
dapat diterapkan pada peralatan – peralatan yang kecil.
Enterprise beans digunakan pada aplikasi yang memiliki criteria
sebagai berikut :
1. Aplikasi harus scalable. Untuk mengakomodir pertumbuhan jumlah
pengguna, kita perlu mendistribusikan komponen – komponen
aplikasi pada berbagai mesin.
2. Aplikasi yang memiliki transaksi yang harus menjamin integritas
data. Enterprise bean mendukung transaksi
3. Aplikasi yang memiliki berbagai macam client. Dengan hanya
beberapa baris kode, remote client dengan mudah dapat menghubungi
enterprise bean.
11.2. Jenis – Jenis Enterprise Bean
11.2.1. Session Bean
Session bean menunjuk pada client tunggal yang ada
dalam application server. Untuk mengakses aplikasi yang
dideploy dalam server, client menginvoke method – method dari
session bean. Session bean bekerja untuk clientnya, melindungi
91
client dari kompleksitas dengan mengeksekusi persoalan –
persoalan business dalam server.
Seperti namanya, session bean sama dengan interaktif
session. Session bean tidak dapat di shared, session bean hanya
memiliki satu client. Ketika client berhenti, session bean juga
berhenti dan terputus koneksi dengan client.
Ada dua jenis session bean yaitu stateful session bean dan
stateless session bean. Pada stateful session bean , instance
variable menunjukkan keadaan dari suatu client session bean
tertentu. Karena client berinteraksi dengan beannya, keadaan ini
sering dinamakan conversational state.
State dipertahankan selama client-bean session. Jika client
menghapus bean atau menghentikannya, session berakhir dan
state hilang. Sifat transient dari state tidak menjadi masalah
karena percakapan antara client dan bean berakhir disana.
Stateless session bean tidak mempertahankan suatu
keadaan conversational dengan client. Ketika client menginvoke
method – method suatu stateless bean, instance variable bean
dapat berisi keadaan tertentu untuk client tersebut, tetapi hanya
selama invokasi. Ketika method selesai, keadaan specific client
tidak dipertahankan. Client dapat mengubah state instance
variable dalam pool stateless bean, dan state ini dipertahankan
sampai pada invokasi selanjutnya dari pool stateless bean.
Session bean harus digunakan pada keadaan sebagai berikut :
Pada waktu tertentu, hanya satu client mengakses instance
bean
State bean tidak persistent (tetap), hanya ada pada periode
yang pendek
Bean mengimplementasikan web service
92
Statefull session bean cocok untuk criteria sebagai berikut :
Bean state menunjukkan interaksi antra bean dan client
tertentu
Bean perlu menyimpan informasi tentang client
Dibelakang layar, bean mengelola aliran kerja dari beberapa
enterprise bean.
Untuk memperbaiki performance, kita dapat menggunakan
stateless session bean terutama jika bean state tidak memiliki data untuk client
tertentu dan dalam suatu invokasi method tunggal, bean melakukan tugas –
tugas generic untuk semua client. Sebagai contoh kita dapat menggunakan
stateless session bean untuk mmengirimkan email yang mengkonfirmasi suatu
pesanan online.
11.2.2. Massage-Driven Bean
Message-driven bean adalah enterprise bean yang menyebabkan
aplikasi – aplikasi java Entertprise Editon memproses message secara
asinkronous. Umumnya bertindak sebagai JMS message listener, yang
sama dengan suatu ecent listener kecuali message driven bean menerima
pesan – pesan JMS bukan event. Message dapat dikirim oleh setiap
komponen java enterprise edition atau aplikasi JMS atau sistem yang
tidak menggunakan teknologi java EE. Message driven bean dapat
memproses pesan – pesan JMS atau pesan – pesan lainnya.
Perbedaan utama antara message-driven bean dan session bean
adalah bahwa client tidak mengakses message – driven bean melalui
interfaces. Tidak seperti session bean, message-driven bean hanya
mempunyai satu class bean. Message-driven bean memiliki ciri sebagai
berikut :
o Message-driven bean dieksekusi setelah menerima message dari
client
93
o Diinvoke secara asinkronous dan waktu hidup singkat
o Tidak menunjukkan share data secara langsung dalam database,
tetapi dapat mengakses dan mengupdate data
o Bersifat stateless
11.3. Access Client dengan Interface
Seorang client dapat mengakses session bean hanya melalui method
yang didefinisikan dalam business interface dari bean. Business interface
mendefinisikan pandangan client terhadap suatu bean. Semua aspek lain
dari bean tersembunyi dari client. Session bean dapat memiliki lebih dari
satu business interface. Client dapat mengakses enterprise bean secara
remote, local ataupun melalui web service.
11.3.1. Remote Client
Remote client dari suatu enterprise bean dapat berjalan pada
mesin yang berbeda dan Java Virtual Machine yang berbeda
dengan enterprise beannya. Remote client dapat berupa web
component, aplikasi client ataupun enterprise bean.
Untuk membuat enterprise bean yang mengijinkan remote
access, yang harus dilakukan adalah :
o Menambahkan business interface dari enterprise bean dengan
anotasi @Remote sebagai berikut :
@Remote
public interface InterfaceName {….}
o Menambahkan bean class dengan @Remote, mendefinisikan
business interface atau interface :
@Remote(InterfaceName.class)
public class BeanName implements InterfaceName {…}
Remote interface mendefinisikan business dan siklus hidup
method yang specific dari bean. Sebagai contoh, remote interface dari bean
94
bernama BankAccountBean dapat memiliki business method deposit dan credit,
seperti dapat dilihat pada contoh berikut :
Gambar 11.1. Interface Enterperise Bean dengan Remote Access
11.3.2. Local Client
Local client memiliki karekteristik sebagai berikut :
1. Berjalan pada JVM yang sama dengan enterprise beannya
2. Dapat berupa web component atau enterprise bean lainnya
3. Lokasi enterprise bean yang diakses tidak transparent.
Untuk membuat enterprise bean yang hanya dapat diakses secara
local, maka dapat dilakukan sebagai berikut :
1. Tambahkan business interface dari enterprise bean dengan
@local interface, contoh
@local
public interface InterfaceName {…}
2. Tentukan interface dengan menambahkan bean class
dengan @Local dan tentukan nama interface.
11.4. Isi Enterprise Bean
Untuk membangun enterprise bean kita harus menyiapkan file –
file sebagai berikut :
1. Enterprise bean class; mengimplementasikan method- method yang
didefinisikan dalam business interface dan semua callback method
2. Business Interface; mendefinisikan method – method yang
diimplementasikan oleh enterprise class bean
95
3. Class Helper; class – class lainnya yang dibutuhkan oleh enterprise
class bean seperti class exception dan class utility
Semua file ini dipaketkan dalam file EJB JAR, modul yang menyimpan
enterprise bean. File EJB JAR bersifat portable dan dapat digunakan untuk
aplikasi – aplikasi yang berbeda. Untuk memasang aplikasi java enterprise, kita
mempaketkan satu atau beberapa modul (seperti file – file EJB JAR) ke dalam
EAR file, yaitu file yang menyimpan aplikasi. Ketika EAR file yang berisi EJB
JAR file dideploy, kita juga mendeploy enterprise bean ke application server.
Kita juga dapat mendeploy EJB JAR yang tidak terdapat dalam EAR file.
Gambar 11.2 berikut ini menunjukkan isi dari EJB JAR file
Gambar 11.2 Struktur Enterprise Bean JARRANGKUMAN
Enterprise bean adalah komponen pada sisi server yang membungkus business logic dari
suatu aplikasi
Enterprise beans menyederhanakan pengembangan aplikasi – aplikasi yang besar dan
terdistribusi
Enterprise beans digunakan pada aplikasi yang memiliki criteria scalable, memiliki
transaksi yang harus mempertahankan integritas data dan memiliki banyak client.
Enterprise bean terdiri atas session bean dan message-driven bean
Session bean bekerja untuk clientnya, melindungi client dari kompleksitas dengan
mengeksekusi persoalan – persoalan business dalam server
Ada dua jenis session bean yaitu stateful session bean dan stateless session bean
Pada stateful session bean , instance variable menunjukkan keadaan dari suatu client
session bean tertentu
96
Stateless session bean tidak mempertahankan suatu keadaan conversational dengan client
Message-driven bean adalah enterprise bean yang menyebabkan aplikasi – aplikasi java
Entertprise Editon memproses message secara asinkronous
Perbedaan utama antara message-driven bean dan session bean adalah bahwa client tidak
mengakses message – driven bean melalui interfaces
Client dapat mengakses enterprise bean secara remote, local ataupun melalui web service
LATIHAN SOAL
1. Jelaskan peran enterprise bean dalam pengembangan aplikasi berskala enterprise
2. Jelaskan criteria aplikasi yang membutuhkan enterprise bean !
3. Ada dua jenis enterprise bean, sebutkan dan jelaskan perbedaannya ?
4. Apa perbedaan antara stateful session bean dan stateless session bean ?
5. Jelaskan file – file yang dibutuhkan untuk membangun enterprise bean !
BAB XIISESSION BEAN
12.1. Pengertian Session Bean
Session bean adalah enterprise bean yang berinteraksi secara
langsung dengan user dan berisi business logic dari suatu aplikasi
enterprise. Session bean merepresentasikan access dari satu client pada
aplikasi enterprise yang dideploy pada server dengan memanggil
methodnya. Satu aplikasi dapat berisi banyak session tergantung pada
jumlah user yang mengakses aplikasi tersebut. Session bean membuat
interaktiv session hanya untuk client tunggal dan melindungi client
tersebut dari kompleksitas dengan mengeksekusi persoalan bisnis pada
sisi server. Sebagai contoh ketika seorang client ingin melakukan aksi
seperti membuat reservasi atau memvalidasi kartu kredit, satu session
bean harus digunakan. Session bean memutuskan data apa yang akan
dimodifikasi. Pada dasarnya, session bean menggunkan satu entity bean
untuk mengakses atau memodifikasi data. Session dan entity bean
mengimplementasikan business logic, business rules, algorithma dan alur
97
kerja. Session bean adalah komponen yang bersifat short-lived. Container
EJB akan menghapus session bean jika client telah keluar.
Nilai Session bean tak dapat dishare dan tidak tetap ( nilainya tak
dapat disimpan dalam database). Satu session bean hanya memiliki satu
client. Ketika client berakhir, session bean yang berasosiasi dengannya
juga berakhir dan data yang berasosiasi dengan session bean ini
dimusnahkan.
Gambar dibawah ini menunjukkan bagaimana session bean
berinteraksi dengan client dan entity bean
Gambar 12.1 Interaksi Session Bean dengan Client dan Entity Bean
Session bean terbagi atas :
Stateless Session Bean; stateless session bean tidak mempertahankan apa
yang disebut conversational state dengan client. Ketika clien memanggil
method – method dari stateless bean, instance dari variable bean dapat
mempertahankan keadaan spesifik untuk client tersebut hanya selama
pemanggilan method. Ketika method selesai, keadaan spesifik client tidak
dipertahankan yaitu EJB container memusnahkan stateless session bean.
98
Jenis session bean ini tidak menggunakan instance variable sehingga session
bean menyimpan data selama pemanggilan method. Karena stateless session
bean dapat mendukung multiple client, stateless session bean menyediakan
skalabilitas yang lebih baik terhadap aplikasi yang membutuhkan banyak
client.
Stateful Session Bean
Jenis bean ini menggunakan instance variable yang mengijinkan data
persistent selama pemanggilan method karena instance variable
memungkinkannya. Client mengeset data ke variable – variable ini yang
dikehendaki untuk persist. Statefull session bean mempertahankan statenya
terhadap pemanggilan method – method yang dibuat loeh client yang sama.
Jika state statefull session bean diubah selama pemanggilan satu method,
maka keadaan tersebut akan tersedia pada client yang sama pada invokasi
yang selanjutnya. Keadaan client bean dipertahankan selama sesi dari client
bean. Ketika client menghilangkan atau mengakhiri bean, session berakhir
dan state menghilang. Karena client berinteraksi dengen beannya, state ini
sering dinamakan conversational state.
Sebagai contoh misalnya seorang customer yang menggunakan debit card
pada mesin ATM. ATM dapat melakukan bermacam operasi seperti
memeriksa saldo, mentransfer uang, ataupun mengadakan penarikan.
Operasi ini dapat dilakukan satu demi satu terhadap client yang sama. Jadi
bean haru mempertahankan keadaannya untuk setiap operasi – operasi
diatas pada client yang sama.
User interface memanggil method – method session bean user ingin
menggunakan fungsi dari session bean. Session bean dapat memanggil session
bean dan entity bean lainnya.
12.2. Kapan Menggunakan Session Bean
Umumnya session bean digunakan dalam keadaan sebagai berikut :
99
o Ketika hanya ada satu client sedanga mengakses instance bean pada
waktu tertentu
o Ketika bean tidak persistent yang berarti bahwa bean tidak akan
bertahan lama
o Bean dimplementasikan pada web services.
Statefull session bean digunakan dalam keadaan berikut :
o Bean ingin menyimpan informasi tentang client selama invokasi
method
o Ketika bean bekerja sebagai mediator antara client dan komponen –
komponen lain dari aplikasi
o Ketika bean harus mengatur aliran kerja dari beberapa enterprise bean
lainnya
Stateless session bean sesuai untuk keadaan berikut :
o Jika bean tidak mengandung data untuk client tertentu
o Jika hanya ada satu invokasi method diantara semua client untuk
melakukan generic task
12.3. Siklus Session Bean
12.3.1 Siklus Stateless Session Bean
Karena stateless session bean tidak pasivate terhadap pemanggilan
– pemanggilan method maka stateless session bean hanya mencakup dua
tingkat yaitu tidak ada atau siap untuk invokasi method. Stateless session
bean mengawali siklus hidupnya ketika client memperoleh reference
terhadap session bean. Untuk itu, container melakukan injeksi
ketrgantungan sebelum memanggil anotasi @PreContruct method jika
ada. Setelah memanggil anotasi method ini bean akan siap untuk
menginvokasi methodnya melalui client.
100
Gambar 12.2 Siklus hidup stateless session bean
Container memanggil anotasi method @PreDestroy saat mengakhiri
siklus session bean. Setelah itu session bean akan disimpan di garbage
collection.
12.3.2 Siklus Statefull Session Bean
Stetefull session bean mengawali siklusnya ketika client
mendapatkan reference statefull session bean. Sebelum menginvoke
anotasi method @PostConstruct container melakukan injection
dependency setelah bean ini siap. Container dapat menonaktifkan sebuah
bean dalam keadaan ready (umumnya container menggunakan algorithma
terakhir yang digunakan untuk mempasifkan sebuah bean). Dalama
mekanisme yang dapat dipasifkan bean pindah dari memory ke memory
kedua. Container menginvoke anotasi method @PrePassivate sebelum
mempasifkan bean. Jika client menginvoke business method pada bean
yang telah dipasifkan maka container menginvoke method anotasi
@PostActivate untuk membawa bean dalam keadaan ready. Perhatikan
gambar berikut ini :
101
Gambar 12.3 Siklus hidup statefull session bean
Saat mengakhiri siklus bean, client memanggil anotasi method @Remove
setelah itu container memanggil anotasi method @PreDestroy yang
mengakibatkan bean akan dibawa ke garbage collection.
12.4. Contoh Statefull Session Bean
Untuk contoh statefull session bean kita akan membuat, mendeploy
dan menjalankan aplikasi java JEE sederhana yang dinamakan account.
Tujuan dari account adalah melakukan dua operasi transaksi (simpan dan
tarik) bagi customer. Aplikasi account ini terdiri atas sebuah enterprise
bean, yang melakukan transaksi – transaksi dan dua jenis client yaitu
appilication client dan web client.
Langkah – langkah untuk membuat aplikasi ini adalah :
1. Buat enterprise bean : AccountBean
2. Buat aplikasi client : AccountCustomer
3. Deploy account ke server
4. Jalankan aplikasi client
12.4.1. Membuat Enterprise Bean
Enterprise bean dalam contoh ini adalah sebuah statefull session
bean yang dinamakan AccountBean. Account session menunjukkan
informasi account bagi account customer yang sementara online. Bean
customer dapat menyimpan dan menarik sejumlah uang dari accountnya.
Untuk mengelola account dibutuhkan Remote business interface
(Account) dan Session bean class (AccountBean).
Account business interface adalah interface Java yang
mendefinisikan semua business method yang diimplementasikan dalam
102
class bean. Jika class bean mengimplementasikan interface tunggal,
interface itu dianggap business interface. Business interface adalah local
interface kecuali jika dianotasikan dengan anotasi javax.ejb.Remote.
Class bean dapat juga mengimplementasikan lebih dari satu
interface.Jika bean class mengimplementasikan lebih dari satu interface,
business interface harus dijelaskan dengan class bean menggunakan
@Local atau @Remote. Source code untuk business interface Account
adalah sebagai berikut :
package ejbExample.stateful;import javax.ejb.Remote;@Remotepublic interface Account { public float deposit(float amount); public float withdraw(float amount); @Remove public void remove();}
Session bean class pada contoh ini dinamakan AccountBean.
Class ini mengimplementasikan dua business method (deposit dan
withdraw). Source code dari bean class ini adalah sebagai berikut :
public void jspInit() { try { InitialContext ic = new InitialContext(); account = (AccountRemote) ic .lookup("example/AccountBean/remote"); System.out.println("Loaded Account Bean");
public void addBook(String title, String author, double price) { // Initialize the form if (book == null) book = new BookBank(title, author, price); em.persist(book); }
public Collection <BookBank>getAllBooks() { bookList=em.createQuery("from BookBank b").getResultList(); return bookList; }}
RANGKUMAN
Java Persistence API (JPA) adalah API standart yang digunakan untuk mengelola data
persistent dan object/relational mapping
Java Persistence API adalah framework ringan yang didasarkan pada objek java untuk
mapping object relational
123
Java persistence API tergantung pada anotasi metadata dan meliputi :
o Java Persistence API
o Anotasi Metadata
o Java persistence query language
Domain model menunjukkan object atau entity persistence dalam database
Persistance field atau persistent properties menyatakan keadaan persistent suatu entity.
Untuk memetakan entiry dan relatinshipnya ke data dalam relational database entity –
entity ini menggunakan object-relational mapping.
Ada dua cara untuk mengakses keadaan persistent suatu entity baik dengan
menggunakan instance variable atau menggunakan property javaBean
Entity adalah light weight persistence domain object yang mendefinisikan sebuah table
dalam relational database dan setiap instance suatu entity berasosiasi dengan satu baris
dalam table tersebut
LATIHAN SOAL
1. Jelaskan apa yang dimaksud dengan Java Persistance API dan apa kegunaanya dalam
pengembangan aplikasi enterprise !
2. Bedakan antara JPA dan session bean !
3. Apa yang dimaksud dengan Domain Model dalam kaitannya dengan JPA. Terangkan
maksudnya !
4. Dengan menggunakan entity manager utility buatlah aplikasi sederhana yang
berisikan entity student !
5. Kapan anda menggunakan entity manager, jelaskan !