Pengembangan sistem manajemen reservasi ruangan online dengan zk ajax framework

(1)

HALAMAN JUDUL

PENGEMBANGAN SISTEM MANAJEMEN

RESERVASI RUANGAN ONLINE DENGAN

ZK AJAX FRAMEWORK

(Studi Kasus: PT. Layang – Layang Business Center)

Skripsi

Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer

Oleh: Hendra Kurniawan

107091002527

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH

JAKARTA 2011 M/ 1432 H


(2)

ii

PERSETUJUAN PEMBIMBING

PENGEMBANGAN SISTEM MANAJEMEN

RESERVASI RUANGAN ONLINE DENGAN

ZK AJAX FRAMEWORK

(Studi Kasus: PT. Layang – Layang Business Center) Skripsi

Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer

Fakultas Sains dan Teknologi

Universitas Islam Negeri Syarif Hidayatullah Jakarta Oleh

Hendra Kurniawan 107091002527

Menyetujui, Pembimbing I

Herlino Nanang, MT., CCNA. NIP. 19731209 200501 1 002

Pembimbing II

Siti Ummi Masruroh, M.Sc. NIP. 19820823 201101 2 013 Mengetahui

Ketua Program Studi Teknik Informatika

Yusuf Durrachman, MIT., M.Sc. NIP. 19710522 200604 1 002


(3)

iii

PENGESAHAN UJIAN

Skripsi yang berjudul “Pengembangan Sistem Manajemen Reservasi Ruangan Online Dengan ZK Ajax Framework, Studi Kasus: PT. Layang-Layang Business Center”, telah diuji dan dinyatakan lulus dalam Sidang Munaqosah Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta, pada 24 November 2011. Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Program Teknik Informatika.

Jakarta, Desember 2011 Tim Penguji,

Penguji I

Husni Teja Sukmana, Ph.D NIP. 19771003 200112 1 003

Penguji II

Andrew Fiade, M.Kom NIP. 19820811 200912 1 004

Tim Pembimbing, Pembimbing I

Herlino Nanang, MT., CCNA. NIP. 19731209 200501 1 002

Pembimbing II

Siti Ummi Masruroh, M.Sc. NIP. 19820823 201101 2 013

Mengetahui, Dekan

Fakultas Sains dan Teknologi

DR. Syopiansyah Jaya Putra, M.Sis. NIP. 19680117 200112 1 001

Ketua Program Studi Teknik Informatika

Yusuf Durrachman, MIT., M.Sc. NIP. 19710522 200604 1 002


(4)

iv

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.

Jakarta, Desember 2011

Hendra Kurniawan 1070 9100 2527


(5)

v ABSTRAK

Hendra Kurniawan, Pengembangan Sistem Manajemen Reservasi Ruangan Online Dengan ZK Ajax Framework, Studi Kasus: PT. Layang-Layang Business Center, dibimbing oleh Herlino Nanang, MT., CCNA., dan Siti Ummi Masruroh, M.Sc.

Bagian pemesanan (reservasi), merupakan bagian yang memiliki fungsi sangat vital. Tinggi rendahnya tingkat kepuasan pelanggan ditentukan oleh kemampuan bagian reservasi dalam menangani pemesanan produk atau layanan. PT. Layang-Layang Business Center (LLBC) adalah perusahaan yang bergerak dibidang jasa pelayanan kebutuhan kantor. LLBC merupakan anak perusahaan Koperasi Nusantara (Konusa) yang bertempat di lantai 29 Gedung Medco (The Energy). LLBC menggunakan konsep reservasi dalam proses bisnisnya. Seorang pelanggan yang ingin memesan atau menyelenggarakan sebuah acara (event) harus melakukan reservasi terlebih dahulu. LLBC memiliki permasalahan dalam menjalankan proses bisnisnya diantaranya sering terjadi tumpang tindih data pemesanan dan pembelian barang yang menyebabkan ganti rugi, pelaksanaan event yang berbarengan sehingga jadwal pelaksanaan menjadi bentrok, distribusi data event tidak berjalan dengan baik sehingga terjadi ketidakjelasan dalam pembuatan pelaporan dan adanya jeda waktu yang relatif lama untuk memproses sebuah event sehingga pemrosesan pembelian barang terganggu. Dari permasalahan tersebut penulis memberikan kontribusi nyata berupa usulan sistem teraplikasi yang akan menjadi solusi dalam mengatasi permasalahan aktual organisasi baik dari tingkat strategis maupun operasional tersebut. Aplikasi yang dimaksud adalah Aplikasi Reservasi Ruangan Online. Dibangun dengan menggunakan bantuan beberapa framework antar lain Zk Ajax Framework, Hibernate Framework dan menggunakan sistem manajemen database PostgreSQL.

Kata kunci: ZK, Ajax, Framework, Reservasi, Ruangan, Online Jumlah halaman: 250 halaman


(6)

vi

KATA PENGANTAR Bismillahirrohmanirrohim....

Puji syukur penulis panjatkan kepada Allah swt, karena berkat izin dan kemudahan-Nya penulis dapat menyelesaikan penelitian dan skripsi dengan baik. Shalawat dan salam tidak lupa pula penulis sampaikan kepada Nabi Muhammad saw.

Skripsi ini disusun dengan beberapa tujuan, diantaranya pertama sebagai sumbangan ilmu pengetahuan khususnya dalam bidang teknologi informasi yang sampai detik ini terus berkembang. Kedua, sebagai syarat untuk memperoleh kelulusan dan jejang pendidikan Strata-1 (S1) di Universitas Islam Negeri Syarif Hidayatullah Jakarta. Ketiga, sebagai media ilmiah dan edukatif dalam mengimplementasikan ilmu TI yang telah didapatkan penulis selama di bangku perkuliahan.

Selanjutnya, penulis ingin berterima kasih kepada pihak-pihak yang telah mendukung penulis dalam menyelesaikan skripsi ini, diantaranya:

1. Bapak Dr. Syopiansyah Jaya Putra M.Sis., selaku Dekan Fakultas Sains dan Teknologi,

2. Bapak Yusuf Durrachman M.Sc., MIT., selaku ketua Program Studi Teknik Informatika,

3. Ibu Viva Arifin M.MSi selaku Sekretaris Program Studi Teknik Informatika yang telah memberikan acc kepada penulis untuk menyusun skripsi ini,


(7)

vii

4. Bapak Herlino Nanang, MT., CCNA., selaku dosen pembimbing skripsi pertama yang telah membantu dan membimbing dengan sabar dan penuh perhatian dalam menyusun penulisan,

5. Ibu Siti Ummi Masruroh, M.Sc., selaku dosen pembimbing kedua yang telah banyak membimbing penulis dalam hal konsep dan perancangan sistem, mengevaluasi penyusunan UML dan perancangan lain yang belum sesuai,

6. Bapak Pandu Eka Hidayat, S.Kom., selaku pembimbing lapangan yang telah memberikan arahan dalam masukan terkait dengan sistem berjalan di PT. Layang Business Center,

7. Bapak Ahmad Tri Wibowo, S.Kom, selaku programmer senior yang telah memberikan arahan teknis pemrogramam dalam pengembangan sistem, 8. Bapak Muhammad Arif selaku penanggung jawab perusahaan di PT.

Layang Business Center, yang telah memberikan kesempatan dan kepercayaan kepada penulis untuk melakukan penelitian di perusahaan tersebut,

9. Saudara Heri Nurmanto selaku senior penulis yang banyak membantu memberikan tambahan ilmu, pelajaran dan arahan terkait dengan algoritma dan pemrograman,

10. Saudara Dwi Wahyudi dan Dwi Haryanto, dua orang “Dwi” yang memiliki pengetahuan dan pemahaman TI yang mendalam dan selalu dapat menjadi partner diskusi yang solutif bagi penulis,


(8)

viii

11. Saudara Budiman selaku sahabat penulis yang telah membantu penulis di beberapa kesempatan terutama saat pendaftaran Sidang Munaqosah, dimana saat itu penulis jatuh sakit dan tidak bisa mengurus pendaftaran secara langsung di kampus,

12. Saudara Syifa U Rachman, Fauzi Rahman dan Sufyan Sidqy selaku sahabat dan partner penulis yang telah memberikan semangat dan dukungan baik teori maupun praktis selama penyusunan skripsi,

13. Para dosen Fakultas Sains dan Teknologi terutama kepada Bapak Tahar Agastani (Dosen Algoritma dan Pemrograman Bahasa C semester II), Bapak Yasri (Dosen Pemrograman Berorientasi Obyek & Analisis Algoritma semester IV-V) dan Ibu Dewi Khairani (Dosen Pemrograman Berorientasi Object Lanjut VI-VII) yang telah memberikan ilmu TI baik dalam bidang pemrogramanan atau Software Engineering sehingga penulis dapat cinta terhadap salah satu disiplin ilmu TI tersebut.

14. Bapak Sudarto dan Ibu Sri Hartati, selaku orang tua penulis yang telah memberikan begitu banyak dukungan moral dan spiritual kepada penulis, tidak henti-hentinya mendoakan kelancaran dan keberhasilan skripsi penulis sehingga penulis dapat menyelesaikan skripsi dengan baik,

15. Wenny Nur Aprilia Widyas Sari, selaku adik penulis yang juga telah banyak memberikan semangat dan dukungan moral kepada penulis.

Penulis menyadari, bahwa dalam penelitian ini masih banyak kekurangan dan ketidaksempurnaan. Oleh karena itu, penulis mengharapkan kritik dan saran


(9)

ix

yang dapat penulis jadikan evaluasi dalam mengembangkan penelitian lain dengan lebih baik lagi.

Jakarta, November 2011 Penulis


(10)

x DAFTAR ISI

HA LAM AN J UDU L ... i

PERSETUJ UAN PEM BIM BIN G ... ii

PEN GES AHAN UJ IAN ... iii

PERNY AT AAN ... iv

ABSTR AK ... v

KAT A PEN GANT AR ... vi

D AFT AR IS I ... x

D AFT AR GAM BAR ... xiii

D AFT AR T ABE L ... xv

D AFT AR S IM BO L ... xvi

BAB I PEND AHU LU AN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 3

1.3. Batasan Masalah ... 4

1.4. Tujuan dan Manfaat Penelitian ... 5

1.5. Metodologi Penelitian ... 7

1.6. Sistematika Penulisan ... 8

BAB II LAN D AS AN TEOR I ... 9

2.1. Sistem ... 9

2.2. Reservasi ... 9

2.3. Sistem Reservasi ... 10

2.4. Online ... 10

2.5. Sistem Reservasi Online ... 11

2.6. Sistem Reservasi Ruangan Online ... 12

2.7. Java ... 12

2.7.1. Kelebihan ... 13

2.7.2. Kekurangan ... 15

2.7.3. Perbandingan Java-PHP dan Alasan Memilih Java ... 16

2.8. JavaSrcipt ... 17

2.8.1. Sejarah Singkat JavaScript ... 18

2.8.2. Perbandingan JavaScript dengan Java ... 18

2.9. Ajax ... 20

1. Sejarah Singkat AJAX ... 21

2. Berkenalan Dengan AJAX ... 21

3. Asynchronous & Synchronous... 22

4. XMLHttpRequest Object ... 24


(11)

xi

1. Hibernate ... 27

2. Sruts Framework ... 27

3. Seam Framework ... 29

2.11. ZK Framework ... 29

2.11.1.Alasan Memilih Teknologi ZK ... 31

2.11.2.Perbandingan Framework ZK dengan Struts ... 32

2.11.3.AJAX: Teknologi Dibalik ZK... 33

2.11.4.Karakteristik Utama ZK ... 35

2.12. Object Relational Mapping (ORM) ... 38

2.12.1.Alasan Memilh ORM ... 42

2.12.2. Impedance Missmatch ... 42

2.12.3.Keunggulan ORM ... 43

2.13. PosgreSQL ... 44

2.14. Web ... 46

2.14.1.Arsitektur Web Tradisional ... 47

2.14.2.Aplikasi Web... 48

2.14.3.Jenis Aplikasi Web... 49

2.15. Rapid Application Development (RAD) ... 51

2.16.1.Alasan Menggunakan RAD ... 51

2.16.2.Fase-Fase RAD ... 53

2.16.3.Kelebihan RAD ... 56

2.16.4.Kekurangan RAD ... 56

2.16. Unified Modelling Language (UML) ... 57

1. Structure Diagrams ... 59

2. Behavior Diagrams ... 63

BAB III METODO LO GI PENE LIT IAN ... 67

3.1. Fase Mengumpulkan Data ... 67

1. Studi Pustaka ... 67

2. Studi Literatur ... 68

3. Observasi ... 71

4. Wawancara ... 72

3.2. Fase Mengembangkan Sistem ... 73

1. Fase Perencanaan Syarat-Syarat (requirements planning) .. 73

2. Fase Workshop Desain RAD (RAD workshop design) ... 74

3. Fase Implementasi (implementation) ... 75

3.3. Siklus Penerapan RAD ... 76

3.4. Kerangka Berfikir ... 77

BAB IV HAS IL D AN PEM BAHAS AN ... 78

4.1. Implementasi Teknologi ZK Ajax Framework ... 78


(12)

xii

4.1.2. Pembuatan Database-driven Aplikasi ... 84

4.2. Fase Perencanaan Syarat-Syarat ... 91

4.2.1. Pemetaan Permasalahan ... 91

4.2.2. Analisis Kebutuhan Sistem ... 96

4.3. Fase Workshop Desain RAD ... 100

4.3.1. Iterasi Wrokshop Desain RAD: Pertama (1) ... 100

4.3.2. Iterasi Workshop Desain RAD: Kedua (2) ... 110

4.3.3. Pemodelan Fungsional Aplikasi... 127

4.3.4. Pemodelan Struktural Aplikasi ... 171

4.3.5. Pemodelan Behavioral Aplikasi ... 195

4.4. Fase Implementasi ... 199

4.4.1. Pengkodean (coding) Aplikasi ... 199

4.4.2. Pengujian (testing) Aplikasi ... 201

BAB V KES IM PU LAN D AN S AR AN ... 203

5.1. Kesimpulan ... 203

5.2. Saran ... 204

D AFT AR P UST AKA ... 205

LAM P IR AN I – A LAT O BSERV ASI ... 211

LAM P IR AN II – PEN GUJ IAN AP LIKAS I ... 217

LAM P IR AN III – DEN AH R U AN G AN PERUS AHA AN ... 226


(13)

xiii

DAFTAR GAMBAR

Gambar 1. 1 Diagram Metodologi Rad ... 7

Gambar 2. 1 Perbandingan Platform Php, Rails Dan Java ... 16

Gambar 2. 2 Model Synchronous Proses ... 22

Gambar 2. 3 Model Asynchronous Proses ... 23

Gambar 2. 4 Diagram Bagaimana Struts Framework Bekerja Dalam Aplikasi Web ... 28

Gambar 2. 5 The Zk Loader, The Zk Au Engine And The Zk Client Engine At Work ... 34

Gambar 2. 6 Interaksi Antara Pengguna Dan Server Web ... 47

Gambar 2. 7 Fase Rad Model Kendall & Kendall ... 51

Gambar 2. 8. Uml Dan Perang Metodologi Oop ... 58

Gambar 2. 9 Deployment Diagram ... 62

Gambar 2. 10 Component Diagram ... 63

Gambar 2. 11 Sequence Diagram... 64

Gambar 4. 1 Rich Picture Sistem Berjalan Pt. Llbc ... 91

Gambar 4. 2 Solusi Ti Dalam Prose Bisnis Strategis Perusahaan... 96

Gambar 4. 3 Activity Diagram Create User (Administrator) ... 127

Gambar 4. 4 Activity Diagram Fungsi Login ... 128

Gambar 4. 5 Activity Diagram Fungsi Manajemen Master Data ... 129

Gambar 4. 6 Activity Diagram New Reservation ... 130

Gambar 4. 7 Activity Diagram Edit Reservation ... 131

Gambar 4. 8 Activity Diagram Confirmation Room ... 132

Gambar 4. 9 Activity Diagram Cancel Reservation... 133

Gambar 4. 10 Activity Diagram Approval Event ... 134

Gambar 4. 11 Activity Diagram Add Discount & Print Banquet Order ... 135

Gambar 4. 12 Activity Diagram Print Reservation Approval ... 136

Gambar 4. 13 Activity Diagram Create & Add Detail Purchase Request ... 137

Gambar 4. 14 Activity Diagram Process Purchase Request ... 138


(14)

xiv

Gambar 4. 16 Activity Diagram Create & View Billing ... 140

Gambar 4. 17 Confirm, Download Sales Report ... 141

Gambar 4. 18 Activity Manajemen Payment Report ... 142

Gambar 4. 19 Use Case Diagram Manajemen User Sistem... 167

Gambar 4. 20 Use Case Diagram Manajemen Data Master ... 169

Gambar 4. 21 Use Case Diagram Manajemen Reservasi ... 170

Gambar 4. 22 Use Case Diagram Manajemen Purchasing ... 170

Gambar 4. 23 Use Case Description Manajemen Pelaporan ... 171

Gambar 4. 24 Class Diagram Sistem Reservasi Ruangan Online ... 194

Gambar 4. 25 Sequence Diagram Untuk Pembuatan User ... 195

Gambar 4. 26 Sequence Diagram Untuk Pembuatan Reservation ... 196

Gambar 4. 27 Sequence Diagram Untuk Appvoal Event ... 196

Gambar 4. 28 Sequence Diagram Untuk Permintaan Barang ... 197

Gambar 4. 29 Sequence Diagram Untuk Pembelian Barang ... 197

Gambar 4. 30 Sequence Diagram Untuk Sales Report ... 198


(15)

xv

DAFTAR TABEL

Tabel 2. 1 Perbandingan Javascript Dengan Java ... 19

Tabel 4. 1 Identifikasi Strategi Teknologi Informasi ... 93

Tabel 4. 2 Identifikasi Pola Solusi ... 95

Tabel 4. 3 Feedback User Pada Iterasi Ke-1 ... 109

Tabel 4. 4 Feedback User Pada Iterasi Ke-2 ... 125

Tabel 4. 5 Use Case Diagram Membuat Account ... 143

Tabel 4. 6 Use Case Diagram Melihat Daftar User ... 143

Tabel 4. 7 Use Case Diagram Memperbaharui User... 144

Tabel 4. 8 Use Case Diagram Memperbaharui Profil User ... 145

Tabel 4. 9 Use Case Description Login ... 145

Tabel 4. 10 Use Case Diagram Menghapus User ... 146

Tabel 4. 11 Use Case Description Manajemen Data Pelanggan ... 147

Tabel 4. 12 Use Case Description Manajemen Data Paket ... 148

Tabel 4. 13 Use Case Description Manajemen Data Produk ... 149

Tabel 4. 14 Use Case Description Manajemen Data Supplier ... 150

Tabel 4. 15 Use Case Description Manajemen Data Stock In ... 151

Tabel 4. 16 Use Case Description Manajemen Data Stock Out ... 153

Tabel 4. 17 Use Case Description Manajemen Data Inventory ... 154

Tabel 4. 18 Use Case Description Melihat Daftar Reservasi ... 155

Tabel 4. 19 Use Case Description Menambah Data Reservasi ... 155

Tabel 4. 20 Use Case Description Mengubah Data Reservasi ... 156

Tabel 4. 21 Use Case Description Membatalkan Reservasi ... 157

Tabel 4. 22 Use Case Description Manajemen Reservasi... 157

Tabel 4. 23 Use Case Description Membuat Laporan Penjualan... 158

Tabel 4. 24 Use Case Description Melihat Laporan Penjualan ... 159

Tabel 4. 25 Use Case Description Manajemen Persetujuan Event ... 160

Tabel 4. 26 Use Case Description Manage Confirmation Room ... 161

Tabel 4. 27 Use Case Description Purchase Request ... 162

Tabel 4. 28 Use Case Description Manajemen Purchase Request ... 162

Tabel 4. 29 Use Case Description Menambahkan Detil Purchase Request ... 163

Tabel 4. 30 Use Case Description Memproses Purchase Request ... 164


(16)

xvi

DAFTAR SIMBOL DAFTAR SIMBOL Simbol 1. Notasi Activity Diagram (Dennis, Wixom, & Tegarden, 2005)


(17)

xvii

DAFTAR SIMBOL Simbol 2. Notasi Use Case Diagram (Dennis, Wixom, & Tegarden, 2005)


(18)

xviii

DAFTAR SIMBOL Simbol 3. Notasi Sequence Diagram (Dennis, Wixom, & Tegarden, 2005)


(19)

xix

DAFTAR SIMBOL Simbol 4. Notasi Class Diagram (Dennis, Wixom, & Tegarden, 2005)


(20)

1

BAB I PENDAHULUAN

BAB I PENDAHULUAN

1.1. Latar Belakang

Bagian pemesanan (reservasi), merupakan bagian yang memiliki fungsi vital dalam sebuah organisasi yang bergerak di bidang jasa atau penyewaan layanan. Tinggi rendahnya tingkat kepuasan pelanggan serta berhasil atau tidaknya visi organisasi, salah satu penentunya adalah dari kemampuan dalam memanajemen proses reservasi tersebut.

Saat ini, jika hanya mengandalkan peran aktif dari seorang individu (bagian reservasi) tanpa didukung dengan pemanfaatan Teknologi Informasi (TI) pastinya strategi, visi dan visi organisasi akan sulit direalisasikan. Dalam perkembangan dunia bisnis saat ini, peran TI dimanfaa sebagai alat untuk pendukung strategi dan proses bisnis sebuah organisasi.

PT. Layang-Layang Business Center (LLBC) adalah perusahaan yang bergerak dibidang jasa pelayanan kebutuhan kantor. LLBC merupakan anak perusahaan Koperasi Nusantara (Konusa) yang bertempat di lantai 29 Gedung Medco (The Energy). LLBC menyediakan kebutuhan pelayanan penyewaan ruangan (room service) dengan jumlah ruangan sebanya 28 – 30 ruangan eksekutif yang menunjang aktivitas perkantoran bagi perusahaan-perusahaan yang berdomisili di gedung Medco tersebut. Adapun spesifikasi produk LLBC antara lain: meeting rooms, training room, workshop room, function hall dan kebutuhan profesional lainnya.


(21)

LLBC menggunakan konsep reservasi dalam proses bisnisnya. Seorang pelanggan yang ingin memesan atau menyelenggarakan sebuah acara (event) harus melakukan reservasi terlebih dahulu. Pelanggan tersebut, harus menghubungi pihak customer service area (CSA) untuk memberikan informasi pemesanan.

PT. LLBC memiliki permasalahan dalam menjalankan proses bisnisnya. Pertama, sering terjadinya tumpang tindih pemesanan dan pembelian barang yang menyebabkan ganti rugi oleh bagian tertentu. Hal tersebut dikarenakan memanajemen data reservasi tidak terstruktur. Kedua, sering terjadinya kondisi dimana terdapat pelaksanaan event yang berbarengan yang menyebabkan event menjadi terkendala. Ketiga, distribusi data event tidak berjalan sesuai dengan standar operasional perusahaan yang menyebabkan ketidakjelasan dalam laporan dan dokumentasi penjualan. Keempat, adanya jeda waktu yang relatif lama untuk memproses sebuah event yang menyebabkan proses pemesanan dan deadline waktu pembelian barang terganggu.

Berdasarkan gambaran umum permasalahan di atas, maka penulis ingin memberikan kontribusi nyata berupa usulan sistem teraplikasi. Usulan tersebut nantinya akan menjadi sebuah sistem yang utuh dan diharapkan dapat menjadi solusi dalam mengatasi permasalahan aktual organisasi baik dari tingkat strategis maupun operasional. Selain itu, sistem teraplikasi tersebut diharapkan tidak hanya sebatas pada otomasi proses kerja organisasi saja, akan


(22)

3

tetapi dapat mentransformasikan organisasi menjadi lebih efektif dalam menjalankan misinya dan efisien dalam menggunakan sumber dayanya.

Selanjutnya, adapun gambaran umum usulan sistem teraplikasi yang nantinya akan dibangun adalah sebuah aplikasi yang dapat mengorganisasikan data dan proses-proses bisnis secara terstruktur dan terencana. Memanfaatkan peran teknologi informasi khususnya dalam hal manajemen basis data (database) dan pelaporan.

Dari penjelasan di atas, dapat disimpulkan bahwa dibutuhkan sebuah pengembangan manajemen sistem yang dapat mengoptimalkan proses manajemen reservasi bagi organisasi. Untuk itu, judul penelitian TI yang diambil penulis adalah PENGEMBANGAN SISTEM MANAJEMEN RESERVASI RUANGAN ONLINE DENGAN ZK AJAX FRAMEWORK, studi kasus di PT. Layang-Layang Business Center.

1.2. Rumusan Masalah

Berdasarkan latar belakang yang telah dijalaskan, maka kemudian dirumuskan masalah-masalah yang ada antara lain:

1. Bagaimana agar data pemesanan tidak redudansi, tidak mudah berubah dan dapat terdokumentasi dengan baik.

2. Bagaimana agar daftar event yang diperoleh dari pelanggan, dapat didistribusikan sesuai dengan alur proses bisnis yang ada.

3. Bagaimana agar setiap pelaporan yang dilakukan, dapat sesuai dengan catatan pembelian.


(23)

4. Bagaimana agar setiap pencatatan pendokumentasian proses bisnis, tidak mudah hilang.

1.3. Batasan Masalah

Agar pembahasan dalam penelitian ini dapat fokus dan sesuai dengan apa yang diharapkan, maka penulis membatasi permasalahan dan arah penelitian yang akan dilakukan.

1. Pengembangan sistem yang dimaksud adalah proses bisnis yang berjalan secara manual menjadi sistem usulan teraplikasi dengan bantuan teknologi informasi.

2. Aplikasi ini hanya berjalan pada Local Area Network (LAN).

3. Dalam implementasi aplikasi, tidak membahas mengenai keamanan jaringan.

4. Aplikasi ini hanya akan digunakan oleh lima stakeholders yaitu: administrator, customer service area (CSA), operation, purchasing dan accounting.

5. Metode pengembangan sistem yang digunakan dalam penelitian ini adalah Rapid Application Development (RAD) dengan model (Kendall & Kendall, Analisis dan Perancangan Sistem, 2010) yang terdiri dari tiga tahapan pengembangan yaitu: requirements planning, RAD design workshop dan implementation.

6. Dalam penelitian ini, diagram-diagram UML yang dibuat menggunakan bahasa Inggris dikarenakan banyak istilah yang sulit diterjemahkan dalam bahasa Indonesia, atau artinya dikhawatirkan akan berubah.


(24)

5

7. Perancangan (pemodelan) sistem baru, menggunakan tools Unified Modeling Language (UML) dengan tahapan perancangan activity diagram, use case description, use case diagram, class diagram dan sequence diagram. Adapun tools yang digunakan untuk mendukung perancangan UML adalah AgroUML dan Ms. Visio 2010.

8. Pengembangan (developing) sistem baru, dibangun di atas Platform Java Enterprise Edition (JEE), menggunakan konsep pengembangan framework dengan teknologi Hibernate Framework dan Zkoss Framework v.5.0. 9. Pendekatan konsep perancangan database yang digunakan adalah

pendekatan Object dengan Object Relational Mapping (ORM). Sistem basis data yang digunakan adalah PostgreSQL v9.0. Adapun tools perancangan dan desain relasi database menggunakan adalah Database Design and Synchronization (DbWrench) v1.6.6, build: 19.

10. Dalam proses pembuatan pelaporan, disain report (report designer) menggunakan iReport v.3.0 dari Jasper Report dan web container yang digunakan untuk menampung aplikasi yang dibangun adalah Apache Tomcat v6.0.

1.4. Tujuan dan Manfaat Penelitian 1. Tujuan

Tujuan yang ingin dicapai oleh penulis dalam penelitian ini antara lain: a. Maksimalnya visi, misi dan nilai-nilai organisasi.

b. Terpecahkannya permasalahan organisasi melalui pengembangan sistem reservasi yang terotomasi.


(25)

c. Terdukungnya proses pengorganisasian dan konsistensi data reservasi dengan pengembangan sistem reservasi terotomasi.

d. Terintegrasinya tugas dan peran stakeholders dalam proses bisnis yang ada sehingga efektifitas dan efisiensi meningkat.

2. Manfaat

a. Bagi PT. Layang – Layang Business Center

Manfaat yang mungkin dapat diambil terhadap pengembangan sistem ini antara lain:

1) Berkurangnya tingkat kesalahan dalam pengorganisasian data. 2) Lebih efektifnya proses pelaksanaan reservasi karena beberapa alur

kerja sistem telah diotomasi.

3) Konsistennya data karena direkam dalam sistem basis data yang aman dan terdokumentasi.

4) Jelas dan maksimalnya pembuatan laporan-laporan karena diatur dalam sistem terotomasi.

b. Bagi Pengguna

Manfaat lain yang mungkin dapat diambil oleh pengguna sistem ini antara lain:

1) Pencatatan dan pengorganisasian seluruh data yang berkaitan dengan reservasi akan dapat dengan mudah dimasukan, diubah atau diamankan dalam sistem.

2) Pembuatan pelaporan yang berkaitan dengan proses reservasi, akan dengan mudah dibuat dan diajukan kepada stakeholders.


(26)

7

3) Pendistribusian data yang didasarkan pada alur kerja sistem, akan dapat dimaksimalkan.

1.5. Metodologi Penelitian

Metodologi penelitian yang digunakan penulis mencakup dua tahapan yaitu mengumpulkan data dan mengembangkan aplikasi. Pada tahap mengumpulkan data, penulis melakukan studi pustaka, studi literatur, observasi dan wawancara. Penjelasan lebih lanjut terkait dengan hal tersebut dijelaskan pada BAB III poin 3.1.

Gambar 1. 1 Diagram Metodologi RAD

Selanjutnya, pada tahap mengembangkan aplikasi penulis menggunakan metodologi Rapid Application Development (RAD) dengan model (Kendall & Kendall, Analisis dan Perancangan Sistem, 2010). Pada model tersebut, terdapat tiga tahapan pengembangan antara lain: requirements planning, RAD design workshop dan implementation.


(27)

1.6. Sistematika Penulisan

BAB I PENDAHULUAN

Bab ini berisi latar belakang, alasan atau sebab diambilnya topik, tujuan pencapaian dan manfaat penelitian.

BAB II LANDASAN TEORI

Bab ini berisi pembahasan teori-teori yang digunakan penulis dalam menyusun dan mengimplementasikan penelitian.

BAB III METODOLOGI PENELITIAN

Bab ini berisi penjelasan penggunaan metodologi penelitian dalam mengimplementasikan penelitian yang dilakukan.

BAB IV HASIL DAN PEMBAHASAN

Bab ini berisi hasil analisis permasalahan serta pemecahan masalah yang dihadapi, pembahasan terkait dengan bagaimana sistem usulan dimodelkan dan diimlementasikan.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan jawaban atas permasalah yang ditemui dalam penelitian dan perumusan masalah. Selain itu, terdapat saran dari penulis terhadap penelitian terkait dimana saran tersebut diharapkan dapat berguna dalam pengembangan sistem yang lebih baik di masa yang akan datang.


(28)

9

BAB II LANDASAN TEORI

BAB II

LANDASAN TEORI

2.1. Sistem

Menurut (McLeod 2001), yang dimaksud dengan sistem adalah sekelompok elemen yang terintegrasi dengan maksud yang sama untuk mencapai suatu tujuan.

Lebih lanjut menurut (O‟Brien 2003), sistem didefinisikan sebagai sekumpulan elemen yang saling berhubungan dan saling bekerjasama untuk mencapai tujuan tertentu, dengan cara menerima masukan (input) dan menghasilkan keluaran (output) di dalam suatu proses transformasi yang terorganisasi.

2.2. Reservasi

Menurut (Silalahi, 2009), reservasi merupakan suatu permintaan/ pemesanan untuk memperoleh sesuatu, yang dilakukan beberapa waktu sebelumnya oleh seseorang dengan menggunakan berbagai cara pemesanan untuk memastikan bahwa layanan memang tersedia dan dapat dipesan.

Jika berbicara mengenai reservasi dalam bidang perhotelan, reservasi dapat diartikan sebagai: kegiatan pemesanan ruangan oleh calon pelanggan kepada pihak hotel, dalam waktu dan dengan sistem tertentu.


(29)

2.3. Sistem Reservasi

Menurut (Silalahi, 2009), sistem reservasi ruangan hotel adalah pemesanan ruangan oleh calon pelanggan kepada pihak hotel, dimana data pemesanan tersebut langsung diproses sehingga dapat segera dihasilkan output bagi pelanggan.

Berdasarkan penjelasan tentang sistem dan reservasi di atas, maka dapat disimpulkan bahwa yang dimaksud dengan sistem reservasi adalah sekumpulan elemen yang saling berhubungan dan saling bekerjasama untuk mendukung suatu kegiatan pemesanan atau permintaan layanan bisnis tertentu sehingga dapat dihasilkan output yang cepat dan sesuai.

2.4. Online

Menurut kamus kateglo.bahtera.org, kata „dalam jaringan’ (disingkat: „daring‟, atau dalam bahasa Inggris: online) adalah keadaan di saat seseorang terhubung ke dalam suatu jaringan ataupun sistem yang lebih besar.

Dalam sebuah sistem yang terkait dengan aktivitas tertentu, dikatakan online jika elemen dari sistem tersebut berada dalam keadaan beroperasi. Sebagai contoh, sebuah installasi pembangkit listrik dikatakan online jika ia dapat menyediakan listrik pada jaringan elektrik.

Sebaliknya, yang dimaksud dengan offline (putus jaringan) secara lebih spesifik menggambarkan kondisi komputer yang tidak terhubung ke suatu sistem(umumnya internet).


(30)

11

2.5. Sistem Reservasi Online

Menurut (Silalahi, 2009) konsep sistem reservasi yang ada pada hotel-hotel, dibangun menjadi dua tipe, yaitu sistem reservasi manual (offline) dan sistem reservasi terotomasi (online).

1. Reservasi manual (offline)

Adalah konsep reservasi konvensional dimana permintaan pelanggan yang masuk diterima dan diproses oleh seorang customer service area (CS) yang berada di lobby hotel. Selanjutnya, data pelanggan tersebut disimpan dalam tumpukan arsip pelanggan.

2. Reservasi otomasi (online)

Adalah konsep reservasi yang berkembang dengan manfaatkan peran teknologi informasi di dalamnya. Data pemesanan ruangan yang diperoleh dari calon pelanggan, dapat langsung diproses sehingga informasi yang dibutuhkan pun dapat langsung diterima oleh pelanggan.

Berdasarkan penjelasan di atas, maka dapat disimpulkan bahwa yang dimaksud dengan sistem reservasi online adalah sebuah sistem reservasi yang dapat memproses data dan informasi reservasi dengan cepat dan efisien serta terhubung dalam sebuah jaringan yang lebih besar.


(31)

2.6. Sistem Reservasi Ruangan Online

Berdasarkan penjelasan mengenai sistem reservasi online sebelumnya, maka yang dimaksud dengan sistem reservasi ruangan online adalah adalah sebuah sistem reservasi yang terhubung dalam jaringan/ sistem tertentu dengan tujuan untuk mengatur proses pemesanan sebuah layanan ruangan tertentu dengan cepat dan efisien. Cepat karena terhubung dan terintegrasi dalam sebuah sistem/ jaringan sehingga data yang tersimpan dalam storage dapat langsung ditemukan saat ditelusuri. Efisien maksudnya, proses reservasi dapat dilakukan secara tepat dan cermat serta tidak membuang waktu, biaya, tenaga. (Wibisono, 2010)

2.7. Java

Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems yang saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model obyek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang bersifat umum/ non-spesifik (general purpose) dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang


(32)

13

memungkinkan aplikasi Java mampu berjalan di beberapa platform sistem operasi yang berbeda, Java dikenal pula dengan slogannya WORA write ones run anywhere "Tulis sekali, jalankan dimanapun". Saat ini Java merupakan bahasa pemrograman yang paling populer digunakan dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.

2.7.1. Kelebihan

Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform/ sistem operasi komputer, sesuai dengan prinsip WORA. Dengan kelebihan tersebut, pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin/ bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis Java dikerjakan di atas sistem operasi Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.


(33)

OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Object. Java merupakan salah satu bahasa pemrograman yang murni berbasis obyek. Semua tipe data diturunkan dari kelas dasar yang disebut object. Hal ini sangat memudahkan pemrogram untuk melakukan desain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.

Kepustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/ kepustakaan (kumpulan program program yang disertakan dalam pemrograman Java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat berbagai kepustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.

Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java.


(34)

15

Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.

2.7.2. Kekurangan

Tulis sekali, jalankan dimana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan yang lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.

Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode dan tipe data. Hal yang sama juga terjadi pada platform Microsoft .NET (baca dot net). Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/ dilakukan reverse-engineer.


(35)

Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.

2.7.3. Perbandingan Java-PHP dan Alasan Memilih Java

Alasan penulis memilih teknologi Java dalam mengembangkan aplikasi ini, dijawab penulis dengan melihat grafik perbandingan platform tiga bahasa pemrograman (PHP, Rails dan Java) dari Tim Bray pada Gambar 2.1. Grafik tersebut penulis jadikan dasar dan pijakan dalam memberikan alasan dipilihnya platform Java sebagai bahasa pemrograman dan pengembangan aplikasi.


(36)

17

(menurut Tim Bray, Director of Web Technologies at Sun Microsystems )

Menurut (Tim Bray) Java memiliki unsur maintainability yang tinggi dibandingkan dengan bahasa pemrograman PHP. Maintainability adalah usaha yang diperlukan untuk menemukan dan memperbaiki kesalahan (error) dalam software. Maintainability juga disebut sebagai pemeliharaan sistem, dimana setelah sebuah software berhasil dikembangkan dan diimplementasikan, akan terdapat berbagai hal yang perlu diperbaiki berdasarkan hasil uji coba maupun evaluasi.

Dari penjelasan tersebut dapat disimpulkan bahwa Java memiliki kemampuan untuk menemukan dan memperbaiki kesalahan yang lebih baik. Selain itu Java juga baik dalam pemeliharaan sebuah sistem. Maka dari penjelasan itulah penulis memilih Java sebagai bahasa pemrograman untuk mendukung sistem yang akan dibangun.

2.8. JavaSrcipt

JavaScript adalah bahasa yang berbentuk kumpulan skrip yang pada fungsinya berjalan pada suatu dokumen HTML. Sepanjang sejarah internet, bahasa ini adalah bahasa skrip pertama untuk web. Bahasa ini adalah bahasa pemrograman untuk memberikan kemampuan tambahan terhadap bahasa HTML dengan mengizinkan pengeksekusian perintah-perintah pada sisi user, yang artinya di sisi browser bukan di sisi server web. (Alamsyah, 2006)

JavaScript bergantung kepada browser (navigator) yang memanggil halaman web yang berisi kumpulan skrip dari JavaScript yang terselip dalam


(37)

dokumen HTML. JavaScript tidak memerlukan kompilator atau penerjemah khusus untuk menjalankannya (kompilator JavaScript sendiri sudah masuk di dalam browser). Lain halnya dengan bahasa “Java”, yang memerlukan kompilator khusus untuk menerjemahkan skrip Java di sisi user atau klien.

2.8.1. Sejarah Singkat JavaScript

JavaScript diperkenalkan pertama kali oleh Netscape pada tahun 1995. Pada awalnya bahasa ini dinamakan “LiveScript” yang berfungsi sebagai bahasa sederhana untuk browser Netscape Navigator 2. Pada masa itu, bahasa ini banyak menuai kritik karena kurang aman. Pengembangannya pun terkesan terburu-buru dan tidak ada pesan kesalahan yang ditampilkan ketika setiap kali ada kesalahan pada saat menyusun suatu program. Kemudian sejalan dengan giatnya kerjasama antara Netscape dan Sun pada masa itu, maka Netscape memberikan nama “JavaScript” kepada bahasa tersebut pada tanggal 4 Desember 1995. Pada saat yang bersamaan, Microsoft sendiri mencoba untuk mengadaptasikan teknologi ini yang mereka sebut sebagai “Jscript” pada browser Internet Explorer 3. (Alamsyah, 2006)

2.8.2. Perbandingan JavaScript dengan Java

JavaScript merupakan suatu bahasa yang perkembangannya lambat dibandingkan dengan Java. Pada JavaScript, kode skrip yang ditulis tidak bisa disembunyikan karena kode langsung ditulis dalam dokumen HTML


(38)

19

dan sangat mudah terlihat. Sedangkan pada Java, kode sudah berbentuk setengah terkompilasi (applet) dan tidak mungkin terlihat dari dalam dokumen HTML, satu mesin virtual di sisi user yang bertanggung jawab untuk menerjemahkan program di dalam applet tersebut setiap kali halaman HTML yang memuat applet tersebut dipanggil oleh browser. Dibandingkan dengan applet Java, yang cukup lambat dibuka oleh browser, bisa dikatakan bahwa JavaScript cukup cepat dipanggil (load) oleh navigator.

Berikut ini satu tabel yang menjelaskan perbandingan mendasar antara Java dan JavaScript

Tabel 2. 1 Perbandingan JavaScript dengan Java

JavaScript Java

Bahasa yang diintepretasikan langsung oleh browser.

Bahasa yang setengah terkompilasi dan memerlukan Java Virtual

Machine (JVM) untuk

menerjemahkannya. Kode terintegrasi dengan

HTML.

Kode (applet) terpisah dari dokumen HTML, dipanggil pada saat membuka dokumen HTML.

Bahasa dengan karakteristik yang terbatas.

Bahasa dengan karakteristik yang luas (pendeklarasian jenis variabel). Hubungan dinamis, referensi

dari obyek diverifikasi pada saat obyek dimuat (loading).

Hubungan statis, obyek harus ada pada saat program dimuat (loading)/ dikompilasi.

Kode program dapat diakses. Kode program tersembunyi.

Lebih lanjut, JavaScript adalah bahasa yang case sensitive, artinya membedakan penamaan variabel dan fungsi yang menggunakan huruf besar dan kecil, contoh variabel atau fungsi dengan nama TEST, berbeda


(39)

dengan variabel dengan nama test. Dan yang terakhir adalah pada JavaScript seperti halnya bahasa Java ataupun C, setiap instruksi kode program diakhiri dengan karakter titik koma (;).

2.9. Ajax

AJAX merupakan bahasa pemrograman baru yang hanya merupakan sebuah teknik pemanfaatan object XMLHttpRequest dengan JavaScript untuk berkomunikasi dengan server secara Asynchronous, dengan pemanfaatan object XMLHttpRequest ini dapat membuat proses berjalan secara background (bekerja di belakang layar) sementara user dapat tetap berinteraksi dengan halaman web yang ada. Pemanfaatan teknik Asynchronous ini jugalah yang telah mendorong pengembangan web menjadi lebih kaya atau banyak yang menulisnya dengan istilah pengembangan Rich Internet Application (RIA) atau Web 2.0. (Peter, 2007)

AJAX pertama kali diperkenalkan oleh Jesse James Garrett pada tulisannya yang berjudul AJAX: A New Approach To Web Applications. Jasse James memberi istilah AJAX untuk singkatan dari Asynchronous JavaScript and XML, namun pada perkembangannya data yang dikomunikasikan secara Asynchronous tidaklah harus berupa XML data, dapat pula digunakan format data lain untuk dikomunikasikan secara Asynchronous dengan server seperti PLAIN TEXT FILE, HTML DATA atau juga berupa SWF data (Flash file).


(40)

21

1. Sejarah Singkat AJAX

Teknik komunikasi Asynchronous dengan server sendiri pertama kali dkembangkan oleh Microsoft pada tahun 1997, kemudian pertama kali XMLHttpRequest Object diperkenalkan pada IE5 (1998) dan dipergunakan secara luas pada Outlook Web Access. Jesse James Garrett‟s kemudian memberikan istilah AJAX untuk teknik Asynchronous ini pada salah satu tulisannya di tahun 2005. Dan hingga saat ini telah banyak yang mengimplementasikan teknik ini dalam pengembangan web, sebagai contoh penggunaan AJAX dalam web yuitu Google+ (plus), Google Map, Gmail, Yahoo, Facebook, Flickr.com, Gmai dan lain-lain.

2. Berkenalan Dengan AJAX

Sebelum dibahas panjang lebar tentang scripting dan coding, akan dibahas terlebih dahulu tentang apa yang disebut dengan AJAX, siapa sebenarnya AJAX dan bagaimana kelakuannya.

AJAX bukan merupakan bahasa pemrograman baru, namun hanya sebuah istilah untuk teknik pemanfaatan Javasript dalama mengontrol class object XMLHttpRequest untuk berkomunikasi dengan server kemudian melakukan refresh atau update konten yang ada dalam halaman web tanpa melakukan reload keseluruhan halaman web seperti pada metode traditional sebelumnya, AJAX sendiri merupakan singkatan dari “Asynchronous JavaScript and XML”.


(41)

3. Asynchronous & Synchronous

Bagaimana AJAX bekerja dan mengapa pemanfaatan AJAX ini membawa isitlah baru pada pengembangan web sehingga muncul istilah Web 2.0 dan ada beberapa istilah lain yang juga dapat ditemukan dengan memanfaatkan AJAX seperti Rich Internet Application (RIA).

Dari singkatan AJAX sebelumnya, ditemukan istilah “Asynchronous”, berikut penjelasannya dalam istilah tersebut dalam pengembangan web. Jika terdapat teknik Asynchronous maka juga terdapat Synchronous, adapun perbedaan kedua teknik tersebut dalam pengembangan website dapat digambarkan dalam model berikut:

Gambar 2. 2 Model Synchronous Proses

Saat user berinteraksi dengan sebuah halaman web terdapat banyak pilihan link yang dapat ditemukan dan saat link tersebut dipilih (click), maka halaman web tersebut akan melakukan komunikasi dengan server melalui internet untuk meminta proses ke server (send request). Selama server melakukan proses, user akan menunggu hasil proses tersebut.

se rv e r re sp o n

client web browser client web browser client web browser

server server interaksi interaksi interaksi in te rn e t se n d r e q u e st se rv e r re sp o n se n d r e q u e st


(42)

23

Setelah server selesai melakukan proses yang diminta, maka server akan mengembalikan hasil proses yang akan ditampilkan pada client web browser.

Dalam proses synchronous ini, user melakukan permintaan proses (requesti process) ke server dan menunggu hingga server mengembalikan hasil proses yang diminta, umumnya hasil proses dari server merupakan sebuah halaman web baru yang ditampilkan pada web browser.

Pemanfaatan teknik Asynchronous dengan JavaScript ini dalam pengembangan web lebih dikenal dengan istilah Web 2.0 (baca: web two point O). Dengan teknik proses Asynchronous, sebuah aplikasi web dapat lebih kaya atau Rich (Rich Internet Application). User dapat dibiarkan untuk tetap berinteraksi dengan halaman web yang ada selama proses request dilakukan dan server belum mengembalikan hasil proses yang diminta. Saat hasil proses telah selesai, pengguna hanya perlu melakukan memperbaharui (update) data halaman web yang telah ada, berikut gambar dari proses kerja Asynchronous tersebut:

Gambar 2. 3 Model Asynchronous Proses server server

client web browser

se rv er r es po n interaksi in te rn et se n d r eq u es t se rv er re sp o n se n d r eq u es t


(43)

User berinteraksi dengan link-link yang ada untuk meminta proses ke server, proses yang diminta akan dikirimkan secara transparan (background) ke server, selama server belum mengembalikan data hasil proses, user dapat tetap bekerja dengan halaman web yang ada sebelumnya.

Setelah server selesai melakukan proses, hasil proses tersebut akan dikirimkan kembali kepada web browser, saat data yang dikirimkan server telah diterima oleh web browser pada user, maka data tersebut ditampilkan pada halaman web yang telah ada sebelumnya. Disinilah terlihat semua proses komunikasi dengan server dilakukan secara transparan (background).

4. XMLHttpRequest Object

Untuk dapat mengembangkan aplikasi web dengan teknik AJAX ini, perlu dikombinasikan beberapa hal berikut:

a. JavaScript untuk membuat object XMLHttpRequest yang digunakan untuk berkomunikasi dengan server secara behind the scene.

b. Document Object Model (DOM), adalah hasil proses yang diterima akan ditampilkan dengan memanipulasi object DOM yang telah dipersiapkan sebelumnya untuk menampilkan data hasil proses yang diberikan server.


(44)

25

c. eXtensible Markup Language (XML) adalah format data yang dikembalikan oleh server, data XML ini siap dibaca dan ditampilkan untuk memperbaharui (update) content pada halaman web.

Secara sederhana beberapa kombinasi di atas akan dimanfaatkan untuk membuat aplikasi web dengan teknik AJAX ini. Namun, masih dapat dikembangkan lebih lanjut hal-hal diatas dengan mengetahui proses kerja dari teknik AJAX ini.

Adapun kelebihan utama AJAX terletak pada pemanfaatan class object XMLHttpRequest untuk berkomunikasi dengan Web Server secara background dalam melakukan request.

Pada pengembangan web aplikasi sebelumnya, terdapat banyak aplikasi web yang sedikit rumit karena masing-masing browser mempunyai standar dan cara berbeda untuk membuat object XMLHttpRequest tersebut.

Untuk dapat berjalan dengan baik pada semua browser, diperlukan beberapa kondisi untuk mendeteksi web browser yang digunakan oleh user dan kemudian membuat object XMLHttpRequest tersebut sesuai web browser yang digunakan.

2.10. Framework

Beberapa devinisi framework:

1. The American Heritage® Dictionary of the English Language : A structure for supporting or enclosing something else, especially a skeletal support used as the basis for something being constructed.


(45)

2. The Free Online Dictionary of Computing : In object-oriented systems, a set of classes that embodies an abstract design for – solutions to a number of related problems.

(http://dictionary.reference.com/browse/framework)

Berdasarkan penjelasan di atas, dapat diketahui bahwa framework dalam dunia komputer diartikan sebagai sebuah acuan utama berupa kerangka program yang bersifat global, dapat disesuaikan dengan keinginan penggunanya dan mudah dalam mempelajarinya. Framework yang ada saat ini telah mencakup berbagai macam bahasa pemrograman dan terus dikembangkan. Perkembangan yang paling banyak dan signifikan adalah dalam dunia pemrograman web. Telah diketahui pula bahwa dua platform besar yang cukup berpengaruh dalam dunia pemrograman web adalah PHP dan Java EE. Pada PHP, framwork yang ada dan berkembang antara lain Akelos, ash.MVC, CakePHP, CodeIgniter, Yii, Zend dan masih banyak lagi. (PHP Framework, 2011, http://www.phpframeworks.com/)

Sedangkan untuk JavaEE, framework yang banyak digunakan dan dikembangkan antara lain ztemplate (Apache), ZK (LGPL/ ZOL), Hibernate, WebWork (Apache), Spring (Apache), Play! (Apache 2.0), JBoss Seam (LGPL), Java Server Faces (JSF) dan banyak lagi yang lainnya. (http://en.wikipedia.org/wiki/Comparison_of_Web_application_framewo rks)

Berikut adalah beberapa jenis framework berbasis Java yang saat ini masih terus dikembangkan:


(46)

27

1. Hibernate

Hibernate is an open source ORM service implementation. Hibernate is an ambitious project that aims to be a complete solution to the problem of managing persistent data in Java. It mediates the application’s interaction with a relational database, leaving the developer free to concentrate on the business problem at hand. Hibernate is a nonintrusive solution. You

aren’t required to follow many Hibernate-specific rules and design patterns when writing your business logic and persistent classes; thus, Hibernate integrates smoothly with most new and existing applications

and doesn’t require disruptive changes to the rest of the application.

(Bauer & King, 2007)

Dari pengertian di atas dapat disimpulkan, bahwa yang dimaksud dengan Hibernate ORM adalah sebuah aplikasi yang mendefinisikan kelas-kelas persistan yang dipetakan (mapping) ke dalam tabel-tabel tertentu yang ada di sistem basis data yang mendasari aplikasi yang berkaitan.

2. Sruts Framework

Struts adalah web development framework yang berada di bawah payung Apache Software Foundation. Struts menggunakan pola kerja Model-View-Controller (MVC) dengan memanfaatkan Java Bean (Model), Servlet (Controller) dan JSP (View). (Arianto, 2008)


(47)

Gambar 2. 4 Diagram Bagaimana Struts Framework Bekerja Dalam Aplikasi Web

Pada saat web container mendeploy aplikasi, ActionServlet akan membaca file struts-config.xml yang berisi semua konfigurasi yang diperlukan untuk menjalankan sistem ini. Ketika ada request dari browser, langkah-langkah berikut akan dijalankan:

a. Request data akan secara otomatis dibungkus ke dalam sebuah obyek ActionForm.

b. ActionServlet akan mencari controller (Action class) yang sesuai dengan path yang di-request oleh browser.

c. Action class memiliki satu method utama dengan nama execute, yang akan dijalankan untuk melayani request. Semua pemrosesan yang dibutuhkan seperti akses database, perhitungan dan lain lain dijalankan di dalam method ini. Disini obyek model dimasukkan kedalam variable HTTP request atau HTTP session, yang selanjutnya akan dipanggil dari halaman JSP.


(48)

29

d. Setelah pemrosesan selesai, method execute tersebut akan mengembalikan return value yang akan menunjukkan Status dari processing.

e. Selanjutnya, status dari Action class tersebut akan digunakan untuk menentukan halaman JSP mana yang akan ditampilkan.

f. JSP dievaluasi, obyek model di-render ke dalam halaman HTML dan respon dikirimkan ke browser.

3. Seam Framework

Seam Framework merupakan salah satu framework yang berbasis Java, dengan spesifikasi platform Java Enterprise Edition (JEE). (JENI, Java Framework, 2008: 1).

Seam Framework dibangun dengan menggabungkan antara Enterprise Java Bean (EJB) 3.0 dengan Java Server Faces (JSF). Framework ini dibuat dan dikembangkan oleh JBoss yang merupakan salah satu divisi RedHat. Proyek pengembangan framework ini, pertama kali dilakukan pada bulan September tahun 2005 dan dipelopori oleh Gavin King yang bertindak sebagai project leader.

2.11. ZK Framework

ZK is an event-driven, component-based framework to enable rich user interfaces for web applications. ZK includes an Ajax-based event-driven engine, a rich set of XML User Interface Language (XUL) and XHTML


(49)

components, and a markup language called ZK User Interface Markup Language (ZUML). (Chen & Cheng, 2007, p. 7)

Dari kutipan di atas, dapat diketahui bahwa ZK adalah framework berbasis komponen (componen-based) yang menyediakan tampilan antar muka (interfaces) yang kaya, dinamis dan interaktif bagi pengembangan web aplikasi.

ZK menyertakan sebuah engine event-driven berbasis AJAX, yaitu sekumpulan komponen-komponen beraneka ragam (rich)yang terdiri dari: XML User Interface Language (XUL), XHTML dan ZK User Interface Markup Language disingkat ZUML (markup language milik ZK). Engine event-driven sendiri merupakan sebuah engine yang dapat memungkinkan untuk melakukan model pemrograman desktop ke model pemrograman web programming. Maksudnya, konsep-konsep pemrograman pada aplikasi desktop yang dilakukan dengan cepat dan mudah atau istilah tren -nya drag and drop, dapat dilakukan pada lingkungan web. Para programmer dapat menampilkan aplikasinya dalam fitur komponen rich XUL dan XHMTL. Ada dua keuntungan dari konsep pengembangan seperti ini, pertama aplikasi yang dibangun bisa sangat dinamis. Kedua, aplikasi tersebut dapat langsung dipasarkan dengan world wide web.

Pada pembahasan selanjutnya, akan dijelaskan mengenai bagaimana peranan AJAX dibalik mekanisme kerja framework ZK. Bagaimana yang mengatur mekanisme sebuah halaman ZK. Kemudian, penulis juga akan menjelaskan tiga karaktistik utama dari teknologi ZK


(50)

31

framework berdasarkan penjelasan dari buku yang dikarang (Chen & Cheng, 2007). Bagian-bagian tersebut meliputi: presentation layer tool, server-centric framework dancomponent-based GUI.

2.11.1.Alasan Memilih Teknologi ZK

Ada beberapa alasan mengapa penulis memilih teknologi ZK sebagai teknologi pemrograman untuk penelitian ini. Pertama, ZK merupakan framework Ajax + Mobile enterprise yang terkemuka dan merupakan cara termudah dalam membangun aplikasi web modern berbasis Java yang hebat. (Chen & Cheng, 2007)

Selanjutnya, berikut alasan mengapa ZK dikatakan sebagai frameworkenterprise yang terkemuka:

1. Enterprise. Trusted. Established.

ZK telah dipercaya dan diakui oleh berbagai industri sebagai pilihan framework yang unggul. Hal ini dapat dilihat dari sudah lebih dari 1.500.000 kali, ZK di-download dan diberdayakan oleh berbagai macam perusahaan dan institusi baik industri kecil dan maupun besar. (Potix Corporation, 2011)

2. Transparan Ajax with Java

ZK menyediakan bagi para pengembang suatu fasilitas yang sederhana dan transparan dari penggunaan Rich Internet Application (RIA) menggunakan Java. Model event-driven merefleksikan keahlian pemrograman desktop tanpa pengembang tersebut harus terfokus


(51)

dengan pemrograman JavaScript, isu-isu penggunaan browser yang berbeda, komunikasi Ajax yang terkesan kompleks dan faktor-faktor lain yang dapat menyia-nyiakan waktu serta biaya dalam pengembangan Aplikasi Web pada level enterprise.

3. Rich Modular UI

ZK menyediakan lebih dari 200 komponen yang unggul (luas dan kuat) yang dapat menyebarkan fungsi polimorfisme (plymorphic). Para pengguna dapat dengan mudah melakukan penyusunan komponen-komponen program seperti halnya permainan LEGO yaitu dengan membangun blok-blok yg berkelanjutan dalam membuat disain UI. ZK menyediakan dua metodologi untuk mengimplementasikan aplikasi UI yaitu dengan menggunakan kode Java atau XML markup.

Berdasarkan ketiga alasan di ataslah, maka penulis memilih framework ZK sebagai framework dalam mendukung pembangunan sistem reservasi ruangan online.

2.11.2.Perbandingan Framework ZK dengan Struts

Setelah penulis memberikan alasan mengapa dipilihnya ZK sebagai framework pembangung sistem ini, maka kemudian penulis juga ingin membandingkan ZK dengan framework sejenis lainnya. Tujuan perbandingan tersebut adalah untuk lebih menyakinkan bahwa ZK


(52)

33

memberikan kontribusi yang lebih untuk mendukung pembangunan aplikasi web enterprise dewasa ini.

Adapun framework sejenis yang ingin penulis bandingkan adalah framework Struts dari Apache Software Foundation. Seperti yang telah dijelaskan sebelumnya pada Sub Bab 2.10 poin ke-2 tentang Framework Strut, Struts menggunakan pola kerja Model-View-Controller (MVC) dengan memanfaatkan Java Bean (Model), Servlet (Controller) dan JSP (View). Yang perlu digarisbawahi disini adalah pada bagian controller dan view, Struts menggunakan Servlet dan Java Server Page (JSP). Sedangkan pada ZK, bagian controller menggunakan Java dan view menggunakan komponen ZK.

Selain itu, pada JSP tidak mendukung konsep RIA yang dapat membuat aplikasi menjadi kaya dan memiliki UI serta interaksi yang cantik dengan pengguna. Jadi apabila disimpulkan, Struts masih memiliki kekurangan untuk mendukung aplikasi web enterprise yang saat ini sedang hangat, karena dari sisi visual Struts tidak mendukung komponen RIA (dalam hal ini peran dari AJAX).

2.11.3.AJAX: Teknologi Dibalik ZK

Pemahaman akan mekanisme dasar dari teknologi AJAX pada ZK, dapat dilihat dari tiga bagian penting penyusun framework ZK yang tergambar Gambar 1.2. Ketiga bagian itu adalah ZK loader, ZK AU (asynchronous update) engine dan ZK client engine. Bagian ZK loaderi


(53)

dan ZK AU engine, keduanya merupakan bagian dari perangkat Java Servlets. Selanjutnya bagian ZK client engine, merupakan bagian dari kumpulan kode JavaScript. Ketiga bagian itu, diilustrasikan dengan gambar di bawah.

Gambar 2. 5 The ZK Loader, The ZK AU Engine and The ZK Client Engine At Work (Chen & Cheng, 2007)

Adapun mekanisme kerja dari ilustrasi di atas adalah sebagai berikut: 1. ZK loader bertugas sebagai penerjemah URL request yang masuk dan

menghasilkan sebuah halaman HTML yang cocok dengan standar HTML, CSS, JavaScript dan komponen-komponen ZK pada sisi server.

2. Selanjutnya, ZK loader mengirim halaman HTML tersebut, kepada klien dan ZK client engine. ZK client engine sendiri, ada di posisi client yang fungsinya untuk memantau antrian suatu aksi (event) dari JavaScript di browser.


(54)

35

3. Kemudian, jika ada kode JavaScript yang dijalankan (triggered), maka ZK client engine akan mengirim kembali aksi-aksi (juga, termasuk di dalamnya AJAX request), kepada ZK AU engine pada sisi server. 4. ZK AU engine bertanggung jawab dalam menerima permintaan AJAX

yang dikirim sebelumnya. Ia kemudian meng-update properti dari komponen-komponen ZK dan mengirim balik sebuah balasan berupa AJAX ke sisi client.

5. ZK client engine bertanggung jawab dalam menerima respon dan meng-update konten-konten yang cocok dengan Dokument Objek Modeling (DOM) tree pada browser.

Proses di atas akan berlangsung terus menerus, sampai sebuah URL tidak lagi dialamatkan oleh seorang user.

2.11.4.Karakteristik Utama ZK

ZK memiliki tiga karakteristik utama yang terdapat pada dirinya. Karakteristik tersebut secara tidak langsung menunjukkan keunggulan ZK dibanding framework yang mengatur layerview yanglain.

Karakteristik yang pertama menjelaskan tentang fokus ZK dalam tier application. ZK dibangun memang benar-benar untuk memperkaya tingkatan view dari konsep MVC (model view control).

Karakteristik kedua, menjelaskan tentang bagaimana ZK dapat menjadi solusi dari permasalahan komunikasi antara komponen AJAX


(55)

dengan Server. ZK menampilkan teknologi framework berbasis komponen yang mudah untuk di jalankan pada Server apapun.

Dan karakteristik yang ketiga, menjelaskan tentang bagaimana peranan ZK sebagai framework yang dapat membawa konsep pemrograman desktop kepada model pemrograman web.

1. Layar Presentasi (a presentation layer)

ZK memang dirancang seringan mungkin dan hanya berfokus pada layer presentation. Lebih jauh, ZK tidak bergantung pada teknologi back-end di belakangnya, atau semua aplikasi middleware yang mungkin banyak disukai seperti Java Database Connectivity (JDBC), Hibernate, Java Mail, Enterprise Java Beans (EJBs) dan Java Message Service (JMS). Pekerjaan middleware tersebut dapat dikerjakan secara tepat oleh ZK. Bahkan pengembang aplikasi ini dapat membangun aplikasi webnya dengan berbagai teknologi yang sudah akrab dikenal, tanpa harus mempelajari yang baru. Akan tetapi, ada juga pengembang yang ingin memaksimalkan aplikasinya dengan mengkombinasikan ZK dengan sebuah middleware, dalam hal ini yang menangani Java Persistance (Hibernate ORM).

2. Framework Server Tepusat (a server-centric event-driven framework) Diketahui, bahwa sebagian besar framework berbasis AJAX menyebabkan peran sebuah server menjadi pasif. Hal ini dikarenakan sebuah server hanya bertanggung jawab sebagai penyedia respon


(56)

37

ketika ada request datang dari sisi klien. Komunikasi yang terbangun antar komponen-komponennya pun cukup kompleks dan membutuhkan banyak kode JavaScript, belum lagi masalah ketidaksesuaian antara JavaScript dan browser.

Sebaliknya, ZK menjadi solusi dalam menangani masalah tersebut. Semua komponen ZK dibuat pada sisi Server, hal ini mengakibatkan komunikasi yang terbangun antar komponen lebih mudah karena komponen-komponen itu dapat diakses dengan segera pada Server. Selain itu, cara komunikasi antar komponen yang satu dengan lainnya juga dilakukan dengan event-driven. Artinya, interaksi dapat digerakkan oleh aktifitas user pada sisi klien atau dengan lemparan event dari komponen lain. Penjelasan tentang event-driven dapat dilihat pada bagian 2.1.4 tentang ZK AJAX Framework. Sederhananya, ZK mencerminkan kesederhanaan untuk membuat aplikasi desktop dalam pengembangan aplikasi web dan komunikasi yang lebih interaktif serta responsif bagi para pengguna.

3. Kakas GUI Berbasis Komponen (a component-based gui toolkit) ZK merupakan toolkit GUI (graphical user interface) berbasis komponen. ZK menyediakan lebih dari 70 komponen berbasis XUL dan 80 XHTML dan keduanya menyediakan ZUML markup language untuk desain antarmuka. Pemrogram membuat program dengan memanipulasi event striggered dengan aktivias penggunanya secara langsung.


(57)

2.12. Object Relational Mapping (ORM)

ORM (Object Relational Mapping) adalah sebuah teknik pemrograman yang menghubungkan perbedaan tipe data pada konsep pemrograman yang berorientasi obyek dengan konsep RDBMS. Dengan mengimplementasikan ORM, developer bisa lebih berfikir secara obyek dibanding dengan tabel dan kolom-kolom yang menjadi ciri dari model relasional. ORM digunakan untuk menjaga kemurnian pola pikir developer atas pemrograman berorientasi obyek. (Object Relational Mapping (ORM) Object Oriented Programming, 2010)

Seperti yang sudah dikenal banyak orang, model pemrograman database yang umum digunakan adalah dengan model CRUD ( create-retrieve-update-delete). Untuk dapat mengoperasikan data yang terdapat pada database, tentunya langkah pertama kali yang harus dilakukan adalah dengan melakukan create data (diasumsikan sudah teradapat skema tabel sebelumnya). Adapun perintah yang umum digunakan adalah

INSERT INTO tabel_name(`kolom_name`) VALUES(‟value_property‟)

Setelah itu jika ingin menampilkan data, yang dilakukan adalah

SELECT * FROM tabel_name

Dan ketika ingin melakukan edit pada salah satu data, maka harus diketahui ID/ Primary Key dari data yang akan di-edit tersebut, kemudian baru dimasukkan nilai baru dengan menggunakan perintah


(58)

39

UPDATE table_name SET kolom_name = „new_value_property‟ WHERE Primary_key = „key_to_update‟

Dan apabila ingin dilakukan penghapusan data, maka yang dilakukan adalah dengan mengambil kembali primary-key dan menjalankan perintah

DELETE FROM tabel_name where Primary_key = „key_to_delete‟

Dari penjelasan konsep model pemrograman database di atas, tidak ada masalah dalam penyelesaiannya. Akan tetapi, saat konsep diatas dikaitkan dengan model pemrograman Object Oriented Programming (OOP), maka akan sedikit mengalami kesulitan. Kesulitan tersebut datang saat konsep seperti pewarisan sifat (inheritance) atau polimorfisme yang terdapat di OOP diterampkan. Konsep database di atas tidak dapat mendukung hal tersebut.

Untuk itu, saat ini terdapat sebuah konsep yang menggabungkan metode pemrograman database dengan konsep Object Oriented Programming. Pada konsep OOP, pengembang memodelkan elemen-elemen dari aplikasi menjadi class atau object pengembang juga melakukan desain tabel yang ternormalisasi dalam aplikasi dan tabel-tabel itu sudah bisa mewakili obyek-obyek yang ada dalam aplikasi. perlu diperhatikan bahwa obyek yang dibahas pada pembahasan ini adalah obyek yang berfungsi untuk mewakili sebuah elemen, bukan obyek bertipe controller atau lainnya.


(59)

Konsep ORM adalah konsep dimana dilakukan mapping dari tabel menjadi obyek. Kolom-kolom yang ada pada tabel nantinya akan menjadi attribute atau variabel-variabel dalam obyek. Satu obyek mewakili satu row. Karena merupakan obyek, untuk mengakses beberapa row sekaligus, dapat disamakan dengan mengakses array dari obyek.

Berikut adalah contoh penggunaan konsep ORM sederhana. Contoh kasusnya adalah Blog. Diasumsikan bahwa untuk membuat blog sederhana diperlukan dua obyek yaitu blog dan post dengan relasi one to many. Satu blog dapat memiliki banyak post. Maka tabel yang dapat dibuat adalah sebagai berikut.

Blog:

- name (primary key)

- owner (nama pemiliki blog)

Post:

- post_id (primary key, auto_number)

- blog_id (blog yang memiliki posting ini)

- tanggal (tanggal posting)

- content (isi posting blog)

Bila menggunakan konsep konvensional yaitu CRUD, maka yang harus dilakukan ketika membuat blog baru adalah menjalankan query

INSERT INTO blog (name, owner) VALUES(„sanctuary‟, „hendrawan‟)

Kemudian ketika ingin melakukan posting, maka yang dilakukan adalah menjalankan query:


(60)

41

INSERT INTO post(blog_id, tanggal, content)

VALUES(„sanctuary‟, NOW(), „ini postingan pertama saya‟)

Jika menggunakan ORM, maka ketika ingin membuat blog baru, langkah sederhana yang dapat dilakukan adalah menjalankan perintah berikut:

Blog myBlog = new Blog(); myBlog.name = “sanctuary”; myBlog.owner = “hendrawan”; myBlog.save();

Ketika dijalankan perintah save(), maka ORM secara otomatis akan menerjemahkan obyek tersebut menjadi sintak-sintak SQL dan menjalankannya di serverdatabase.

Selanjutnya, ketika ingin ditambahkan postingan baru maka perintah yang dapat dilakukan adalah sebagai berikut:

Post newPost = new Post();

newPost.blog = myBlog; // myBlog diambil dari code sebelumnya

newPost.tanggal = DateTime.Now();

newPost.content = “ini postingan pertama saya”; newPost.Save();

Dari contoh kode program di atas, maka dapat dilihat perbedaan yang signifikan antara kode program. Jika dibandingkan dengan kode program yang penuh dengan syntax SQL sebelumnya, maka dengan ORM terlihat lebih mudah difahami.


(61)

2.12.1.Alasan Memilh ORM

Saat ini, pemrograman berorientasi obyek sudah diterima secara luas dalam pengembangan aplikasi bisnis. Pengembangan aplikasi berorientasi obyek menyediakan metode yang lebih cocok dan fasilitas pemodelan obyek lebih nyata daripada paradigma pemrograman terstruktur.

Beberapa alasan mengapa penulis memilih konsep ORM sebagai konsep dalam memodelkan basis data. Yang pertama karena, ORM secara otomatis object-to-table dan table-to object conversion, yang menyederhanakan pengembangan aplikasi. Perkembangan pasar kini lebih disederhanakan menuju ke kecepatan waktu dan mengurangi biaya pengembangan dan pemeliharaan. Selanjutnya, ORM membutuhkan sedikit kode dibandingkan dengan menggunakan perintah SQL. ORM menyediakan caching transparan obyek pada klien dengan demikian meningkatkan kinerja sistem. Sebuah ORM yang baik adalah solusi yang sangat optimal yang akan membuat aplikasi lebih cepat dan lebih mudah.

2.12.2.Impedance Missmatch

Para pengembang beralasan yang paling penting menggunakan teknik ORM adalah ketidakcocokan impedansi yang terjadi antara kode obyek dan database relasional. Model berorientasi obyek didasarkan pada prinsip bahwa aplikasi dibangun dengan menggunakan kumpulan komponen yang dapat digunakan kembali yang disebut obyek. Di sisi lain,


(62)

43

pola database relasional adalah satu dimana menyimpan database data dalam bentuk tabel. Sedangkan database sebagian besar didasarkan pada algoritma murni matematis, model berorientasi obyek didasarkan pada representasi kehidupan dan lingkungan seseorang. Oleh karena itu, untuk mengatasi kesenjangan antara dua paradigma, perlu untuk memetakan model obyek ke model data. (Object Relational Mapping (ORM) Object Oriented Programming, 2010)

2.12.3.Keunggulan ORM

ORM memiliki kemampuan untuk menciptakan obyek database virtual, yaitu suatu model database yang direpresentasikan kedalam sebuah obyek pada bahasa pemrograman OOP. Berikut ini adalah beberapa kelebihan yang dimiliki ORM, antara lain:

1. Mempercepat pengembangan program. Contohnya, mengurangi perulangan kode query, memudahkan pemakaian karena tabel-tabel ter-representasikan dalam bentuk obyek.

2. Membuat akses data menjadi lebih abstrak dan portable. Hal ini dikarenakan ORM menangani generate (pembangkitan) syntax SQL berdasarkan vendor database-nya (contoh MySQL, PostgreSQL, Oracle, DbDerby, dll).

3. Mendukung enkapsulasi business rule pada lapisan Data Access. 4. Dapat melakukan generate boilerplate code (unit kode yang reusable)


(63)

2.13. PosgreSQL

Puluhan tahun sudah sistem database mengalami perubahan. Mungkin sudah terlalu banyak sistem database dan aplikasinya yang telah tumbuh dan kemudian berubah sesuai dengan perkembangan teknologi. Salah satu yang memegang peranan besar adalah sistem database yang dikenal dengan nama POSTGRES, yang dikembangkan di University of California at Barkeley pada tahun 1986. Pada saat itu, POSTGRES mencetak perubahan besar yang segera membuat berbagai pihak tertarik. Setelah satu tahun dimebangkan, lahirlah versi demo pada tahun 1987, yang segera dipertunjukkan di berbagai konferensi teknologi komputer saat itu. (Noprianto, 2004)

Dan akhirnya, pada tahun 1989, lahirlah POSTGRES versi 1. Versi 2 yang datang dengan banyak perubahan desain pun diluncurkan satu tahun kemudian. Berkembang dan berkembang terus, pada tahun 1991, lahirlah POSTGRES 3 yang pada waktu itu menjadi begitu populer dan segera digunakan oleh banyak aplikasi bisnis. Pada tahun 1993, database ini semakin populer lagi. Basis penggunanya bertambah secara dramatis. Dan karena POSTGRES menjadi terlalu kompleks dan jauh melebihi kebutuhan riset database, maka secara resmi proyok ini dihentikan setelah mencapai versi 4.2. Pada tahun 1994, Andrew Yu dan Jolly Chen menambahkan kemampuan SQL ke dalam POSTGRES yang kemudian berubah menjadi proyek baru dengan nama Postgres95. Sistem database berbasiskan kode POSTGRES tersebut kemudian dilempar sebagai proyek open source dan segera mendapatkan banyak tanggapan. Postgres95 memiliki banyak


(1)

LAMPIRAN IV – KODE SUMBER (source code)

LAMPIRAN IV


(2)

Some Source Code Example

PackageDetail

Model

package org.reservation.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.*;

import javax.persistence.*;

@Entity

@Table(name = "packageproduct")

public class Packageproduct implements

java.io.Serializable {

private static final long serialVersionUID = 6896062624416231288L;

private Integer id, pax;

private Packtype packtype;

private String name, description;

private Double price;

private Set<Packdetail> packdetails = new

HashSet<Packdetail>(0);

private Set<ReservationPackage> reservationPackages = new

HashSet<ReservationPackage>(0);

public Packageproduct() { }

@Id

@GeneratedValue(strategy = IDENTITY)

@Column(name = "ID", unique = true, nullable =

false)

public Integer getId() {

return this.id; }

public void setId(Integer id) {this.id = id;}

@ManyToOne()

@JoinColumn(name = "IDPACKTYPE")

public Packtype getPacktype() {

return this.packtype; }

public void setPacktype(Packtype packtype) {this.packtype = packtype;}

@Column(name = "NAME", length = 45)

public String getName() {

return this.name; }

public void setName(String name) {this.name = name;}

@Column(name = "PRICE", precision = 22, scale = 0)

public Double getPrice() {

return this.price; }

public void setPrice(Double price) {this.price = price;}

@Column(name = "PAX")

public Integer getPax() {

return this.pax; }

public void setPax(Integer pax) {this.pax = pax;}

@Column(name = "DESCRIPTION", length = 65535)

public String getDescription() {

return this.description; }


(3)

public void setDescription(String description) {

this.description = description; }

@OneToMany(cascade=CascadeType.REMOVE, mappedBy =

"packageproduct")

public Set<Packdetail> getPackdetails() {

return this.packdetails; }

public void setPackdetails(Set<Packdetail> packdetails) {

this.packdetails = packdetails; }

@OneToMany(cascade=CascadeType.REMOVE, mappedBy =

"packageproduct")

public Set<ReservationPackage> getReservationPackages() {

return this.reservationPackages; } public void setReservationPackages(Set<ReservationPackage> reservationPackages) { this.reservationPackages= reservationPackages; } }

View

<zk xmlns:w="client"> <?init

class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"

?>

<window id="win1" border="none" closable="false" sizable="false"

mode="embedded" position="left,top" apply="org.reservation.action.PackageAction">

<div align="center">

<label value="Package Detail" style="font-size: 20px; color:#008BB6;

font-weight:bold; font-family: Verdana;" />

</div>

<grid id="First" sclass="GridLayoutNoBorder">

<rows>

<row style= "vertical-align:top;">

<div id="mainComponents"> <groupbox mold="3d" id="gbxListMain">

<caption

label="Package Information"

style="size: 14px; color:#008BB6; font-weight:bold; font-family:Century Gothic;">

</caption> <panel> <panelchildren>

<listbox id="listboxMain"

mold="paging" pageSize="10" sclass="z"> <listhead width="auto">

<listheader align="center"

label="Category" width="140px" sort="none" />

<listheader align="center"


(4)

<listheader align="center"

label="Price" width="80px" sort="none" />

<listheader align="center"

label="Pax" width="80px" sort="none" />

<!-- <listheader label="Minhours"

width="80px" sort="none" /> -->

</listhead>

<listitem label="Input"></listitem> </listbox>

</panelchildren>

</panel> <separator></separator>

<hbox

align="center">

<button

label="Add Package" onClick="" id="btnAddMain" />

<button

label="Edit" onClick="" id="btnEditMain" />

<button

label="Delete" onClick="" id="btnDeleteMain" />

</hbox>

</groupbox> </div>

<div

id="detailComponents">

<groupbox mold="3d" id="gbxListDetail">

<caption

label="Package Detail List"

style="size: 14px; color:#008BB6; font-weight:bold; font-family:Century Gothic;">

</caption> <panel> <panelchildren>

<listbox id="listboxDetail"

mold="paging" pageSize="5" sclass="z"> <listhead>

<listheader align="center"

label="Name Product" width="150px" /> <listheader align="center"

label="Category" /> <listheader align="center"

label="Quantity" /> <listheader align="center"

label="Price" /> </listhead>


(5)

</listbox>

</panelchildren>

</panel> <separator /> <hbox

align="center">

<button

label="Add Detail" onClick="" id="btnAddDetail" />

<button

label="Edit" onClick="" id="btnEditDetail" />

<button

label="Delete" onClick="" id="btnDeleteDetail" />

</hbox> </groupbox> </div>

</row> </rows> </grid>

</window> </zk>

Controller

public class PackageAction extends

GenericForwardComposer{ /* ===== LIST(s) ====*/

List<Packageproduct> allMain = new

ArrayList<Packageproduct>();

Packageproduct selectedMain; Packageproduct selectedFormMain; List<Packdetail> allDetail = new

ArrayList<Packdetail>(); Packdetail selectedDetail; Packdetail selectedFormDetail; /* ======================================================== ============*/

/* ===== COMPONENTS IN >MAIN< SIDE ====*/ Groupbox gbxListMain, gbxFormMain; Listbox listboxMain;

Button btnAddMain, btnEditMain, btnDeleteMain; Button btnSubmitMain, btnCancelMain;

Textbox txtName; Doublebox doublePrice; Intbox intPax;

Combobox cboxCategory; @Override

public void doAfterCompose(Component comp) throws

Exception{

super.doAfterCompose(comp);

Common.insertCombo(cboxCategory, "name", Packtype.class);

//Common.insertCombo(categoryCbx, "type", Packdetail.class);

binder = new AnnotateDataBinder(comp); /* Set the AnnotateDataBinder instance as a variable with the name as specified in arg2

* (default to "binder") and store it in the component as specified in arg0 "component-path".

* (if arg0 is not specified, use Page instead.)

* */


(6)

HibernateUtil.currentSession();

System.out.println("DoAfterComposeAction"); renderListMain();

renderListDetail(); modeStart();

btnAddMain.setImage("img/add.png"); btnEditMain.setImage("img/edit.png"); btnDeleteMain.setImage("img/drop.png"); btnSubmitMain.setImage("img/save.png"); btnCancelMain.setImage("img/reset1.png");

}//end doAfterCompose implements

*Informasi dan dokumentasi

source-code yang lebih detil, terdapat di

DVD skripsi.