PENERAPAN OBJECT RELATIONAL MAPPING PADA STUDI KASUS E-COMMERCE
KHADI KURNIAWAN
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2010
PENERAPAN OBJECT RELATIONAL MAPPING PADA STUDI KASUS E-COMMERCE
KHADI KURNIAWAN
Skripsi Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2010
ABSTRACT KHADI KURNIAWAN Implementation of Object Relational Mapping with Case Study: Ecommerce. Under the direction of PANJI WASMANA and SONY HARTONO WIJAYA. Application development with object-oriented approach has many advantages, such as: easy to maintain, scalable, and flexible. Those advantages will become irrelevant if the developed application needs relational database and is not handled well. Application development with an object-oriented and relational database approach potentially create problems, therefore a technique to link both concepts is needed. one of the popular techniques to overcome existing problems between the object-oriented and relational database approach is Object Relational Mapping (ORM). In this research, an object-oriented e-commerce application and relational database approach was developed. To solve a concept difference between object-oriented and database approach, a Hibernate framework is used. Hibernate is one of the tools that utilize ORM's ability to link those two different concepts. Research shows that an e-commerce application development by using ORM technique can make a database organizing process easier so that the applications that are being developed can be managed better. Keywords: Object Relational Mapping (ORM), e-commerce
Judul Nama NRP
: Penerapan Object Relational Mapping pada Studi Kasus E-commerce : Khadi Kurniawan : G64104061
Menyetujui:
Pembimbing I
Pembimbing II
Panji Wasmana, S.Kom., M.Si. NIP. 19790522 200501 1003
Sony H. Wijaya, S.Kom., M.Kom. NIP. 198108092008121002
Mengetahui: Ketua Departemen
Dr. Ir. Sri Nurdiati, M.Sc NIP. 19601126 198601 2 001
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan kepada Allah subhanahu wata’ala atas rahmat dan hidayah-Nya sehingga karya tulis ini dapat selesai. Sholawat dan Salam mudah-mudahan tercurah kepada Rosululloh shollallohu ‘alaihi wasallam, keluarganya, para sahabat, serta para pengikutnya yang tetap istiqomah menjalankan perintah-Nya. Melalui lembar ini, penulis ingin menyampaikan penghargaan dan terima kasih kepada Bapak Panji Wasmana, S.Kom., M.Si selaku pembimbing I, yang telah meluangkan waktunya untuk membimbing penulis, memberikan ilmu-ilmu yang berharga, serta dukungan selama penelitian ini berlangsung. Bapak Sony Hartono Wijaya, S.Kom., M.Kom selaku pembimbing II, yang telah membimbing penulis, serta Bapak Arief Ramadhan, S.Kom. yang telah bersedia menjadi penguji sekaligus penyemangat dalam pelaksanaan seminar dan sidang. Penulis juga mengucapkan terima kasih kepada seluruh keluarga, khususnya ayah, dan ibu yang telah memberikan dukungan, kasih sayang, doa, dan pengorbanannya selama ini, serta semua saudara penulis, Joko, Risma, dan Faris yang secara tidak langsung memberikan dukungan, dan doa selama pengerjaan skripsi. Penulis juga ingin mengucapkan terima kasih kepada teman-teman penulis yang selalu mendukung, dan memberikan semangat, antara lain kepada: 1. Kak ifnu yang memberikan dukungan, dan training, serta pendapat yang sangat berharga, dan Henri atas bantuan, pendapat, dan kesediaan waktunya berbagi ilmu selama pengerjaan skripsi. 2. Yoga yang selalu memberikan motivasi, semangat, dukungan, dan nasihat yang sangat berguna selama pengerjaan skripsi. 3. Maul, Daus, Hilmy, Ringga, Rahmat, Arif, Onong, Udin, Pipit atas segala bantuan, nasehat, dukungan, dan semangat kepada penulis. 4. Semua teman-teman ilkomerz’41, terima kasih untuk canda tawa, persahabatan, dan kebersamaan selama kuliah di Ilkom IPB. Serta rekan-rekan Ilkomerz angkatan 40, 42, dan 43. Sebagaimana manusia yang tidak luput dari kesalahan, penulis menyadari bahwa karya ilmiah ini jauh dari sempurna. Namun penulis berharap semoga karya ilmiah ini dapat bermanfaat bagi siapapun yang membacanya.
Bogor, Februari 2010
Khadi Kurniawan
RIWAYAT HIDUP Penulis dilahirkan di Jakarta pada 31 Januari 1986 dari pasangan Bapak Solihin dan Ibu Mudlikah. Penulis merupakan anak kedua dari empat bersaudara. Pada tahun 2004 penulis lulus dari Sekolah Menengah Atas Negeri 35 Jakarta. Pada tahun 2004 juga, penulis langsung melanjutkan studi ke Institut Pertanian Bogor melalui jalur USMI (Undangan Seleksi Masuk IPB) dan diterima pada Program Studi Sarjana Ilmu Komputer, Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam. Semasa kuliah penulis aktif di berbagai organisasi, diantaranya adalah HIMALKOM (Himpunan Mahasiswa Ilmu Komputer) dan SERUM (Serambi Ruhiyah MIPA). Penulis menjalani Praktik Kerja Lapang di BPPT (Badan Pengkajian dan Penerapan Teknologi) di Thamrin, Jakarta pada tahun 2007.
DAFTAR ISI Halaman DAFTAR GAMBAR ....................................................................................................................... v DAFTAR LAMPIRAN .................................................................................................................... v PENDAHULUAN Latar Belakang ........................................................................................................................... 1 Tujuan ......................................................................................................................................... 1 Ruang Lingkup ........................................................................................................................... 1 Manfaat ....................................................................................................................................... 1 TINJAUAN PUSTAKA Sistem Berorientasi Objek ......................................................................................................... 1 Basis data Relasional .................................................................................................................. 2 Object / Relational Paradigm Mismatch ................................................................................... 2 Object Relational Mapping ....................................................................................................... 3 Framework Hibernate ................................................................................................................ 3 Design pattern ............................................................................................................................ 4 E-commerce ................................................................................................................................ 4 Karakteristik E-commerce .......................................................................................................... 4 B2B dan B2C.............................................................................................................................. 5 Extensible Markup Language .................................................................................................... 5 Unified Modelling Language (UML) ........................................................................................ 5 MVC Pattern .............................................................................................................................. 5 METODE PENELITIAN Studi Literatur............................................................................................................................. 6 Analisis Masalah ........................................................................................................................ 6 Perancangan Sistem dan Perangkat Lunak ................................................................................ 6 Implementasi dengan Menggunakan ORM ............................................................................... 6 Evaluasi Sistem .......................................................................................................................... 6 HASIL DAN PEMBAHASAN Analisis Masalah ........................................................................................................................ 6 Perancangan Sistem dan Perangkat Lunak ................................................................................ 8 Implementasi Sistem Menggunakan ORM................................................................................ 10 Evaluasi Sistem .......................................................................................................................... 13 KESIMPULAN DAN SARAN Kesimpulan ................................................................................................................................. 14 Saran ........................................................................................................................................... 15 DAFTAR PUSTAKA ...................................................................................................................... 15 LAMPIRAN ..................................................................................................................................... 16
v
DAFTAR GAMBAR Halaman 1 Arsitektur Hibernate...................................................................................................................... 3 2 Peran Hibernate dalam suatu aplikasi........................................................................................... 4 3 Arsitektur MVC pattern................................................................................................................ 6 4 Diagram metodologi penelitian .................................................................................................... 6 5 Potongan use case customer ......................................................................................................... 7 6 Pemetaan Class Customer ke Tabel T_Customer ........................................................................ 7 7 Class diagram e-commerce........................................................................................................... 9 8 Desain antarmuka aplikasi e-commerce ....................................................................................... 10 9 Sequence diagram untuk proses login customer .......................................................................... 10 10 Tabel Customer dengan komponen Address .............................................................................. 11 11 Pemetaan asosiasi one-to-one ..................................................................................................... 12 12 Pemetaan asosiasi many-to-one .................................................................................................. 12 13 DAO pattern................................................................................................................................ 12
DAFTAR LAMPIRAN Halaman 1 Diagram use case e-commerce ................................................................................................... 17 2 Desain Konseptual Basis Data .................................................................................................... 23 3 Desain Struktur Fisik Basis Data ................................................................................................ 24 4 Sequence diagram e - commerce ................................................................................................ 25
vi
PENDAHULUAN Latar Belakang E-commerce merupakan suatu kegiatan perdagangan barang atau jasa yang dilakukan melalui internet. Saat ini, pertumbuhan ecommerce begitu pesat. Di Asia, pertumbuhan e-commerce pada tahun 2004 meningkat 66% dari tahun sebelumnya (Andam 2003). Kemudian menurut Wen-chen Hu (2009), Asosiasi Penerbit Online (Online Publishers Association) mengamati sekitar 15% aktivitas internet berhubungan dengan e-commerce pada lima bulan pertama tahun 2007. Hal ini menunjukkan harapan pelaku bisnis pada ecommerce begitu besar. Pengembangan aplikasi e-commerce dapat diimplementasikan dengan berbagai pendekatan dan teknologi. Pada penelitian ini, dipilih pendekatan berorientasi objek karena akan memudahkan dalam aspek maintenance (Schach 2006). Sementara itu, sistem manajemen basis data yang banyak digunakan saat ini adalah basis data relasional. Dengan demikian, terdapat ketidaksesuaian (mismatch paradigm) antara basis data yang digunakan dengan aplikasi yang dikembangkan dengan pendekatan berorientasi objek. Ketidaksesuaian tersebut antara lain aspek granularity, subtypes, identitas, asosiasi, dan navigasi data. Untuk mengatasi masalah tersebut, penelitian ini akan menerapkan konsep Object Relational Mapping (ORM) yang berfungsi menjembatani ketidaksesuaian dengan studi kasus e-commerce. Tujuan Tujuan penelitian ini adalah memahami dan memanfaatkan konsep ORM dalam pengembangan aplikasi e-commerce. Ruang Lingkup Ruang lingkup penelitian ini adalah: 1 Menerapkan proses Business to Consumer (B2C) yang meliputi penjualan, pembayaran, dan pemesanan. 2 Menerapkan konsep ORM dengan menggunakan satu framework yang telah ada tanpa membandingkan dengan framework lain. Manfaat Penelitian ini merupakan penerapan konsep ORM pada aplikasi e-commerce, sehingga diharapkan dapat bermanfaat dalam pemeliharaan dan pengelolaan manajemen basis
data pada selanjutnya.
pengembangan
e-commerce
TINJAUAN PUSTAKA Sistem Berorientasi Objek Sistem berorientasi objek adalah sistem yang menggunakan sebuah pendekatan pengembangan perangkat lunak yang menggunakan abstraksi dengan objek, kelas yang terenkapsulasi, komunikasi melalui pesan , object lifetime, hirarki kelas, dan polymorphism (Wampler 2003). 1 Abstraksi dengan objek (abstraction with object) Abstraksi adalah suatu mekanisme yang mengizinkan sebuah situasi yang kompleks pada dunia nyata untuk direpresentasikan menggunakan model yang lebih sederhana. 2 Enkapsulasi Enkapsulasi adalah proses penyembunyian semua informasi internal pada sebuah objek dari penyalahgunaan dari luar sistem. Informasi internal tersebut berupa implementasi dari state dan behavior. State didefinisikan sebagai nilai attribut yang ada pada objek, sedangkan behavior didefinisikan sebagai prilaku objek. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface. 3 Interaksi melalui pesan Untuk melakukan tugas tertentu, sebuah objek butuh interaksi dengan objek lain. Interaksi yang terjadi bisa antara objek dari kelas yang sama, atau pun objek dari kelas yang berbeda. Interaksi ini diatur melalui pengiriman pesan. 4 Object lifetime Semua objek memiliki waktu hidup (lifetime). Objek – objek tersebut diciptakan dan diinisialisasi pada saat program dijalankan. Objek-objek itu hidup dan menjalankan fungsinya, dan dihancurkan jika tidak digunakan. 5 Hirarki kelas Pada perancangan berorientasi objek, kelaskelas dari objek disusun menjadi suatu hirarki yang menggambarkan hubungan antara kelas-kelas tersebut. Hubungan yang paling sederhana adalah asosiasi. Asosiasi adalah hubungan antara dua kelas atau lebih. Asosiasi ini menunjukkan bagaimana objekobjek dari kelas yang berbeda berhubungan satu sama lain. Jenis hirarki yang paling sering digunakan adalah agregasi
1
(aggregation) dan inheritance. Agregasi adalah bagian dari hubungan. Sebuah aggregate object melibatkan objek lain yang bisa dipertimbangkan sebagai bagian dari aggregate object. Inheritance adalah suatu mekanisme yang mengizinkan satu kelas (superclass) membagi atribut dan behavior ke kelas lain (subclass). 6 Polymorphism Konsep polymorphism memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu objek agar melakukan suatu aksi yang mungkin secara prinsip sama tetapi secara proses berbeda. Menurut Wampler (2003), enam prinsip dasar tersebut merupakan esensi murni yang bisa merepresentasikan inti dari Object – oriented. Selain itu, ada konsep lain yang merupakan bagian esensi dari pendektan berorientasi objek. Konsep tersebut adalah kelas abstrak, visibility of method, kelas , instance, accessing object, dan low-level view of object. 1. Kelas Abstrak Kelas yang tidak memiliki instace. 2. Visibilty of Methods Kemampuan sebuah kelas untuk melihat dan menggunakan resource kelas lain. 3. Kelas Kelas menspesifikasikan data internal sebuah objek dan merepresentasikan serta mendefinisikan operasi dari objek yang bisa dilakukan. 4. Instance Objek disebut juga sebagai instance dari kelas. 5. Accessing Object Bahasa berorientasi-objek menyediakan mekanisme dasar yang dibutuhkan untuk mengakses bagian-bagian yang berbeda dari sebuah objek. 6. Low-Level view of Object Ketika sebuah program sedang berjalan, instance harus memiliki beberapa implementasi tingkat rendah pada memori komputer. Basis Data Relasional Basis data merupakan kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan di perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya (Hartono 1999). Basis data adalah sebuah struktur yang kompleks dan penting bagi sebuah aplikasi, sama halnya
dengan sebuah rumah yang membutuhkan blueprint sebelum dituangkan menjadi bangunan yang nyata. Menurut Hartono (1999), penerapan basis data dalam sistem informasi disebut dengan sistem basis data. Sistem basis data (database system) adalah suatu sistem yang mengintegrasikan kumpulan dari data yang saling berhubungan satu dengan yang lainnya dan membuatnya tersedia untuk beberapa aplikasi yang bermacam-macam di dalam suatu organisasi. Pada basis data relasional, relation berarti tabel, sehingga data disimpan dalam bentuk tabel-tabel. Relation digunakan untuk menyimpan informasi yang ditunjukan dalam basis data. Setiap tabel mempunyai atribut yang mewakili nama kolom dari tabel tersebut. Konsep relation hanya berlaku terhadap struktur lojik tidak mencakup struktur fisik (Connolly & Carolyn 2002). Object / Relational Paradigm Mismatch Data yang direpresentasikan dalam bentuk tabel pada basis data relasional pada dasarnya berbeda dengan hubungan yang terjadi pada objek pada aplikasi java berorientasi objek. Perbedaan ini yang mendasari ketidaksesuaian pendekatan berorientasi objek dengan basis data relasional (object / relational paradigm mismatch). Masalah ketidaksesuaian ini dapat dibagi ke beberapa aspek, yaitu masalah granularity, masalah subtypes, masalah identitas, masalah asosiasi, dan masalah navigasi data (Bauer & King 2007). 1 Masalah granularity Masalah ini berkaitan dengan user define datatypes (UDT). Pada pendekatan berorientasi objek, pengguna bisa mendefinisikan tipe data selain tipe data primitif (char, int, float, dan lain lain), sedangkan di basis data relasional tidak bisa melakukan hal tersebut. Sebagai contoh class Customer memiliki atribut phone dengan tipe data Phone. Pada basis data relasional tidak mungkin mendefinisikan kolom phone dengan tipe data phone juga karena basis data relasional hanya mengenal tipe data primitif seperti char, varchar, int, dan lain – lain. 2 Masalah subtypes Pada pendekatan berorientasi objek dikenal istilah inheritance (pewarisan) yang menggunakan superclass dan subclass, sedangkan pada basis data relasional tidak dikenal proses pewarisan antartabel.
2
3 Masalah identitas Ketidaksesuaian pada aspek identitas adalah adanya perbedaan pengenal identitas antara objek dan tabel. Pada objek terdapat dua cara untuk membedakan objek yang satu dengan objek lainnya, yaitu dengan menggunakan fungsi antara lambang sama dengan (==) dan method equals(). Lambang sama dengan (==) merujuk pada alamat memori yang sama, sedangkan method equals() merujuk pada nilai secara lojik yang sama. Akan tetapi pada basis data yang membedakan tabel satu dengan tabel yang lain adalah primary key. 4 Masalah asosiasi Ketidaksesuaian pada aspek asosiasi meliputi hubungan dua entitas yang memiliki keterhubungan. Pada pendekatan berorientasi objek, penghubung dua entitas tersebut dikenal sebagai object references, sedangkan pada basis data relasional dikenal dengan foreign key. Asosiasi antarentitas terdiri atas: one-to-one, oneto-many, dan many-to-many. 5 Masalah navigasi data Ketidaksesuaian pada aspek navigasi data meliputi proses pengaksesan suatu objek dari objek lain. Pada basis data relasional navigasi data dilakukan menggunakan query join sedangkan pada pendekatan berorientasi objek dilakukan dengan memanggil suatu method getter. Navigasi dibagi dua macam berdasarkan arahnya, antara lain: directional dan bidirectional (Bauer & King 2007).
mempengaruhi salah satunya. Dengan ORM, dampak perubahan pada salah satu sisi tidak akan banyak mempengaruhi sisi lainnya. • Kinerja Oleh karena ORM meningkatkan produktivitas pengembang, waktu yang tersisa pada saat pengembangan aplikasi bisa dimanfaatkan untuk menangani optimisasi. • Bebas vendor (vendor independence) ORM memisahkan ketergantungan aplikasi dengan satu vendor basis data. Banyak produk ORM yang ditawarkan seperti Hibernate, TopLink, PyDO, dan OpenJPA. Framework Hibernate Framework adalah sekumpulan kelas -kelas yang dirancang untuk memberikan layanan bagi sekumpulan masalah tertentu (Wampler 2003). Saat ini, framework yang tersedia sangat banyak, seperti Hibernate, Spring, Struts, JSF, dan lain-lain. Salah satu framework yang menerapkan konsep ORM adalah Hibernate. Arsitektur Hibernate dapat dilihat pada Gambar 1.
Object Relational Mapping Object Relational Mapping (ORM) adalah suatu teknik pemetaan objek persisten pada aplikasi Java ke tabel pada basis data relasional secara otomatis dan transparan. ORM menggunakan metadata untuk menggambarkan pemetaan dari objek-objek ke basis data (Bauer & King 2007). Menurut Bauer dan King (2007), kelebihankelebihan ORM, yaitu: • Produktivitas ORM mengeliminasi kode-kode yang rumit dan membiarkan pengembang berkonsentrasi pada proses bisnis, sehingga ini akan mengurangi waktu pengembangan perangkat lunak secara signifikan. • Pemeliharaan Tanpa ORM, perubahan yang terjadi pada sisi aplikasi ataupun basis data, akan
Gambar 1 Arsitektur Hibernate Hibernate adalah sebuah tool lengkap pemetaan objek / relasional yang memberikan kelebihan-kelebihan ORM (Bauer & King 2007). Hibernate merupakan tool ORM yang telah banyak digunakan oleh pengembang untuk mengembangkan aplikasi berorientasi objek dengan basis data relasional (Bauer & King 2005). Beberapa variasi yang ada pada Hibernate, yaitu Hibernate Core, Hibernate Annotations, dan Hibernate EntityManager. Beberapa variasi tersebut bisa dikombinasikan sesuai dengan kebutuhan pengembangan aplikasi dan kebutuhan bisnis. Uraian ketiga variasi Hibernate dijelaskan sebagai berikut (Bauer & King 2007):
3
• Hibernate Core Hibernate Core dikenal juga sebagai Hibernate 3.2.x atau Hibernate saja. Ini merupakan versi dasar yang mengatur pemetaan java persistence dalam bentuk file xml. • Hibernate Annotations Versi Hibernate yang memberikan kemudahan lebih dalam pemetaan class ke tabel. Programmer hanya menambahkan beberapa anotasi untuk mengatur pemetaan kelas ke tabel tanpa harus mengkonfigurasi di file xml. • Hibernate EntityManager Variasi modul Hibernate yang menerapkan beberapa konsep dari Java Persistence API (JPA), seperti pemrograman interface, aturan-aturan siklus hidup objek persisten, dan fitur-fitur query.. Secara keseluruhan peran Hibernate dalam sebuah aplikasi dapat dilihat pada Gambar 2.
lengkap dari suatu permasalahan maka akan dapat dengan mudah diketahui pattern apa yang cocok sebagai solusi dari permasalahan tersebut dan ketika menghadapi masalah yang sama atau mirip maka pattern tersebut dapat digunakan kembali. E-commerce Menurut Purbo (2005) yang mengutip pendapatnya David Baum, menyebutkan bahwa e-commerce merupakan suatu set dinamis teknologi, aplikasi dan proses bisnis yang menghubungkan perusahaan, konsumen, dan komunitas melalui transaksi elektronik. Ecommerce adalah salah satu bentuk perdagangan barang, pelayanan dan informasi yang dilakukan secara elektronik. E-commerce digunakan sebagai transaksi bisnis antara perusahaan yang satu dengan perusahaan yang lain, antara perusahaan dengan pelanggan, atau antara perusahaan dengan institusi yang bergerak dalam pelayanan publik. Jika diklasifikasikan, sistem e-commerce terbagi menjadi tiga tipe aplikasi (Nuryani 2001), yaitu: 1.
EMs adalah sebuah sarana yang menggunakan teknologi informasi dan komunikasi untuk melakukan penawaran dalam sebuah segmen pasar, sehingga pembeli dapat membandingkan berbagai macam harga yang ditawarkan. Dalam pengertian lain, EMs adalah sebuah sistem informasi antar organisasi yang menyediakan fasilitas-fasilitas bagi para penjual dan pembeli untuk bertukar informasi tentang harga dan produk yang ditawarkan.
Gambar 2 Peran Hibernate dalam suatu aplikasi Design Pattern Design pattern adalah unsur-unsur rancangan yang seringkali muncul pada berbagai jenis sistem. Design pattern merupakan katalog permasalahan beserta solusi yang sudah teruji dalam perancangan sistem (Gamma et al. 1995). Design pattern yang sering dijadikan untuk bidang studi adalah design pattern yang berasal dari Gang of Four (GoF) yaitu, Erich Gamma, Richard Helm, Ralph Johnson, dan John Vlissides. GoF mengumpulkan pattern-pattern yang biasa dipakai dalam membangun sebuah sistem menjadi suatu katalog lengkap yang dapat dipakai dalam memecahkan berbagai masalah dalam pembangunan sebuah sistem. Hal ini disebabkan karena biasanya permasalahan tidaklah unik, dengan mengetahui deskripsi
Electronic Markets (EMs).
2.
Electronic Data Interchange (EDI) EDI adalah sarana untuk mengefisienkan pertukaran data transaksi-transaksi reguler yang berulang dalam jumlah besar antara organisasi-organisasi komersial.
3.
Internet Commerce Internet commerce adalah penggunaan internet yang berbasis teknologi informasi dan komunikasi untuk perdagangan. Kegiatan komersial ini seperti iklan dalam penjualan produk dan jasa., Transaksi yang dapat dilakukan internet antara lain pemesanan / pembalian barang dimana barang akan dikirim melalui pos atau sarana lain setelah uang ditransfer ke rekening penjual.
4
Karakteristik E-commerce
Extensible Markup Language
Berbeda dengan transaksi perdagangan biasa (Wira 2001), transaksi e-commerce memiliki beberapa karakteristik yang sangat khusus, yaitu:
Menurut Sidik (2004), eXtensible Markup Language (XML) merupakan bahasa yang digunakan untuk meningkatkan fungsionalitas web, dengan menyediakan pengidentifikasian informasi secara fleksibel dan dapat disadur (adaptable) dengan mudah.
•
Transaksi tanpa batas: Sebelum era internet, batas-batas geografi menjadi penghalang suatu perusahaan atau individu yang ingin go-international. Sehingga hanya perusahaan atau individu yang bermodal besar yang dapat memasarkan produknya ke luar negeri. Dewasa ini dengan internet, pengusaha kecil dan menengah dapat memasarkan produknya secara internasional cukup dengan membuat web atau dengan memasang iklan di situs-situs internet.
•
Transaksi anonim : para penjual dan pembeli dalam transaksi melalui internet tidak harus bertemu muka satu sama lainnya. Penjual tidak memerlukan nama dari pembeli sepanjang mengenai pembayarannya telah diotorisasi oleh penyedia sistem pembayaran yang telah ditentukan.
•
Produk digital dan nondigital: produkproduk digital seperti sofware, file mp3, dan produk lain yang bersifat digital dapat dipasarkan melalui internet dengan cara mengunduh secara elektronik. Dalam perkembangannya objek yang ditawarkan melalui internet juga meliputi barangbarang kebutuhan hidup lainnya.
•
Produk barang tak berwujud: banyak perusahaan yang bergerak di bidang ecommerce dengan menawarkan barang tak berwujud seperti data dan ide-ide yang dijual melalui internet.
B2B dan B2C Secara umum e-commerce dapat diklasifikasikan menjadi dua jenis yaitu: Business to Business (B2B) dan Business to Consumer (B2C). B2B adalah sistem komunikasi bisnis online antarpelaku bisnis, sedangkan B2C merupakan mekanisme toko online (electronic shopping mall), yaitu transaksi antara e-merchant dengan e-customer. Business to Business pada umunya transaksi dilakukan oleh para trading partners yang sudah saling kenal dengan format yang telah disepakati bersama. Sedangkan Business to Customer sifatnya terbuka untuk publik, sehingga setiap individu dapat mengaksesnya melalui web server. (Purbo 2000)
XML merupakan format penyimpanan data standar, mudah untuk melakukan pertukaran data. Dokumen XML berisi suatu metadata, data yang memiliki penjelasan (informasi) tentang data itu sendiri. XML dapat disebut juga sebagai ‘metalanguage’ – suatu bahasa yang digunakan untuk mendefinisikan bahasa yang lain. Unified Modelling Language (UML) Menurut Fowler (2004), Unified Modeling Language adalah keluarga notasi grafis yang didukung oleh meta-model tunggal, yang membantu pendeskripsian dan desain sistem perangkat lunak, khususnya sistem yang dibangun dengan menggunakan pemrograman berorientasi objek. UML merupakan standar yang relatif terbuka yang dikontrol oleh Object Management Group (OMG), sebuah konsorsium terbuka yang terdiri dari banyak perusahaan. Beberapa teknik yang berguna pada saat desain perangkat lunak, yaitu use case, class diagram, dan sequence diagram. Use case mendeskripsikan interaksi tipikal antara para pengguna sistem dengan sistem itu sendiri, dengan memberi sebuah narasi bagaimana sistem tersebut digunakan. Class diagram mendeskripsikan jenis-jenis objek dalam sistem dan berbagai macam hubungan statis yang terdapat di antara mereka. Class diagram juga menunjukkan properti dan operasi sebuah class dan batasan-batasan yang terdapat dalam hubungan-hubungan objek tersebut. Sequence diagram menunjukkan bagaimana kelompok-kelompok objek saling berkolaborasi dalam sebuah fungsi tunggal (Fowler 2004). Diagram ini menunjukkan sejumlah objek dan pesan-pesan yang melewati objek-objek ini pada sebuah fungsi tunggal. MVC Pattern Menurut Crawford dan Kaplan (2003), Model-View-Controller Pattern membagi domain masalah menjadi tiga bagian, yaitu model, view, dan controller. Model menyimpan state aplikasi. State aplikasi adalah data yang tersimpan di mana saja, misalnya basis data,
5
java beans, file, dan lain-lain. View merupakan data pada model dan ditamplikan ke pengguna. Controller akan memproses masukan pengguna dan selanjutnya akan meng-update model atau menampilkan view yang baru. Arsitektur MVC pattern dapat dilihat pada Gambar 3.
Perancangan Sistem dan Perangkat Lunak Perancangan sistem dilakukan berdasarkan hasil analisis masalah. Perancangan sistem yang berorientasi objek pada penelitian ini menggunakan notasi UML yang terdiri atas usecase diagram, class diagram, dan sequence diagram. Implementasi dengan Menggunakan ORM Pada tahap ini, dipilih satu framework yang telah mendukung teknologi ORM, yaitu Hibernate. Pada tahap ini juga dilakukan beberapa konfigurasi untuk menerapkan konsep ORM pada aplikasi e-commerce. Tahapan yang dilakukan adalah sebagai berikut: 1. Konfigurasi basis data.
Gambar 3 Arsitektur MVC pattern METODOLOGI PENELITIAN Penelitian ini akan dilaksanakan dengan mengikuti langkah-langkah seperti dapat dilihat pada Gambar 4.
2. Membuat kelas DTO (Data Transfer Object) dengan menghilangkan ketidaksesuaian antara konsep pendekatan berorientasi objek dan basis data relasional. 3. Membuat fungsi akses data. 4. Membuat skema basis data. Evaluasi Sistem Evaluasi sistem dilakukan dengan menganalisis hasil implementasi ORM untuk mengatasi masalah ketidaksesuaian pendektan berorientasi objek dengan basis data relasional. HASIL DAN PEMBAHASAN Analisis Masalah Pada tahap ini dilakukan analisis kebutuhan terhadap sistem. Hasil dari perumusan masalah ini antara lain: 1
Gambar 4 Diagram metodologi penelitian Studi Literatur Studi literatur diawali dengan mempelajari proses bisnis yang ada pada e-commerce dan memahami konsep dan teknologi ORM. Analisis Masalah Pada tahap ini dilakukan analisis sistem ecommerce dan mempelajari masalah-masalah pada sistem tersebut. Selain itu, dilakukan analisis ketidaksesuaian yang terjadi pada aplikasi e-commerce dan basis data yang digunakan.
Deskripsi Umum Sistem
Aplikasi e-commerce ini adalah perangkat lunak berbasis web yang digunakan untuk mengatur proses transaksi penjual dengan pembeli dan memudahkan pembeli untuk berbelanja secara online. Aplikasi ini akan menampilkan daftar produk yang tersedia pada halaman home. Pengguna yang ingin membeli produk tersebut dapat memilihnya dan melanjutkan ke proses transaksi, atau kembali berbelanja. Aplikasi ini juga dilengkapi fasilitas search, memberi komentar suatu produk, dan memberi rating suatu produk. 2
Analisis Kebutuhan Pengguna
Kebutuhan pengguna pada aplikasi ini yaitu:
6
•
Terdapat manajemen pengguna membatasi hak akses data.
•
Tersedia fungsi untuk melakukan autentikasi pengguna. Sehingga hanya pengguna yang terdaftar saja yang berhak melakukan transaksi.
•
Terdapat fungsi pencarian untuk memudahkan pengguna mendapatkan produk yang diinginkan.
•
Setiap halaman pada aplikasi ini memungkinkan pengguna untuk langsung melakukan checkout.
Aplikasi E-commerce membutuhkan basis data dalam menjalankan proses bisnisnya. Basis data yang digunakan pada aplikasi umumnya adalah basis data relasional. Sedangkan pengembangan sistem yang digunakan adalah pendekatan berorientasi objek. Hal ini menimbulkan ketidaksesuaian (paradigm missmatch) karena perbedaan konsep tersebut. Pada penelitian ini tidak semua aspek ketidaksesuaian ditemukan. Ketidaksesuaian yang ditemukan pada penelitian ini adalah granularity, identitas, dan asosiasi.
•
Pengguna dapat menambah atau mengurangi jumlah item yang dipesan, dan menghapus suatu item pesanan.
Uraian berikut menjelaskan setiap aspek ketidaksesuaian yang muncul pada penelitian ini, yaitu;
untuk
Untuk mendeskripsikan sistem ini dari perspektif pengguna digunakan diagram use case. Potongan use case dari sistem ini bisa dilihat pada Gambar 5.
Gambar 5 Potongan use case customer
3
Analisis Masalah Ketidaksesuaian
a Granularity Ketidaksesuaian masalah ini terjadi karena basis data tidak memiliki user-defined datatypes (UDT), sedangkan pada pendekatan berorientasi objek pengguna bisa mendefinisikan tipe data yang sesuai kebutuhannya. Ini terlihat dari kelas customer yang memiliki atribut address. Kelas address sendiri memiliki atribut street, town, zip_code, dan lain-lain. Pada basis data relasional pendefinisian tipe data address tidak bisa dilakukan. Selain address, customer juga memiliki tipe data phone. Kelas phone memiliki atribut gsmPhone, cdmaPhone, dan homePhone. Pemetaaan yang terjadi antara customer dengan address dan phone dapat dilihat pada gambar 6.
Gambar 6 Pemetaan Class Customer ke Tabel T_Customer Hasil analisis kebutuhan pengguna yang lebih detail bisa dilihat pada use case diagram beserta penjelasannya pada Lampiran 1.
b Identitas Masalah identitas muncul karena perbedaan identifikasi objek dan tabel. Pada objek,
7
pengenal identitas dibedakan menjadi dua, yaitu nilai dan alamat memorinya. Dua buah objek dikatakan identik jika alamat memori kedua objek tersebut sama, dan ini dinotasikan dengan a = = b. Sedangkan jika kedua objek tersebut memiliki nilai yang sama, dinotasikan a.equal(b), belum tentu identik. Dua objek tersebut hanya dikatakan memiliki nilai yang secara lojik sama. Pada basis data relasional, baris pada sebuah tabel diidentifikasi oleh primary key. Dengan demikian, sering terjadi beberapa objek yang secara lojik sama tetapi berada pada memori yang berbeda, secara simultan merepresentasikan baris yang sama pada sebuah tabel. Misalnya, dua orang customer yang berbeda lokasi mengakses objek yang sama dari sebuah tabel di basis data. c Asosiasi Asosiasi merepresentasikan hubungan antara dua entitas. Pada pendekatan berorientasi objek, penghubung dua objek dikenal dengan istilah object reference. Object reference bergantung pada arah dari asosiasinya. Jika asosiasi pada dua objek terjadi pada dua arah, maka harus didefinisikan dua kali pada setiap kelasnya. Sedangkan pada basis data relasional, penghubung dua entitas ditandai dengan foreign key. Foreign key pada tabel relasional tidak mengenal arah dari asosiasinya. Arah pada basis data relasional tidak berarti apa-apa karena asosiasi antara dua tabel dihubungkan dengan table join. Arah dari asosiasi ini akan mempengaruhi cara pengaksesan data persisten baik pada pendekatan berorientasi objek maupun pada basis data relasional. Misalnya pada hubungan kelas Address dan Customer. Untuk mengakses informasi alamat digunakan perintah customer.getAddress(). Sedangkan untuk mengaskses informasi customer tidak berlaku perintah yang sama, yaitu address.getCustomer() karena aosiasi yang terjadi hanya satu arah yaitu dari customer ke address. Sedangkan pada basis data relasional, arah yang terjadi tidak akan mempengaruhi cara pengaksesan data. Pada basis data relasional digunakan table join untuk mengakses data yang berhubungan yang berada di tabel lain. Perancangan Sistem dan Perangkat Lunak
1 Perancangan Input Perancangan input berfungsi untuk menerima input dari pengguna aplikasi ecommerce. Input yang ada pada aplikasi ecommerce berupa teks yang diketik oleh pengguna melalui keyboard dan pilihan menu/link yang diklik oleh pengguna melalui mouse. Pada sejumlah form isian yang membutuhkan input berupa teks, dilakukan validasi agar tidak terjadi kesalahan terhadap input data. Perpindahan halaman dalam aplikasi e-commerce ditentukan melalui link pilihan menu dan submenu. 2 Perancangan Output Output pada aplikasi e-commerce berupa halaman web yang bersifat dinamis. Halaman dinamis akan menampilkan data yang tersimpan di dalam data sumber yang dipanggil melalui query tertentu sehingga isi halamannya bisa berubah-ubah pada saat run-time. 3 Perancangan Basis data Perancangan basis data digambarkan sebagai perancangan struktur logis dan fisik dari suatu basis data atau lebih untuk mengakomodasi kebutuhan informasi pengguna dalam suatu organisasi untuk menggambarkan sekumpulan aplikasi. Pada penelitian ini, digunakan EntityRelationship Diagram (ERD) untuk mengilustrasikan struktur logis dan fisik dari basis data. Desain konseptual basis data aplikasi ini dapat dilihat pada Lampiran 2, sedangkan desain struktur fisik basis data aplikasi ini dapat dilihat pada Lampiran 3. Basis data pada penelitian ini dirancang terlebih dahulu di MySql dengan membuat struktur tabel aplikasi. Tahapan desain model basis data diakhiri dengan mendapatkan diagram Entity-Relationship (ER). 4 Perancangan model Pada perancangan sistem menggunakan MVC pattern, model berisi semua proses bisnis. Model merepresentasikan data yang akan disimpan di basis data. Perancangan model ini biasanya dinotasikan dengan menggunakan class diagram untuk memberikan pandangan secara umum atas sebuah sistem. Hasil perancangan model dapat dilihat pada keseluruhan class diagram pada Gambar 7.
Pada tahap ini diperoleh perancangan aplikasi e-commerce. Perancangan aplikasi ecommerce meliputi:
8
Gambar 7 Class diagram e-commerce 5 Perancangan view Pada perancangan view, digunakan template untuk memudahkan desain antarmuka aplikasi, kemudian ditambahkan beberapa komponen
sesuai kebutuhan pada setiap halaman. Sehingga secara umum, aplikasi ini memiliki antarmuka yang sama dengan halaman home. Desain antarmuka aplikasi ini bisa dilihat seperti pada Gambar 8.
9
Gambar 8 Desain antarmuka aplikasi ecommerce 6 Perancangan controller Controller digunakan untuk melakukan proses input yang diterima dari pengguna. Proses ini selanjutnya akan mempengaruhi model atau view aplikasi. Perancangan controller digambarkan menggunakan sequence diagram sehingga terlihat hubungan dari input pengguna, objek-objek yang terlibat dalam proses, dan output yang diberikan kepada pengguna. Salah satu contoh sequence diagram dapat dilihat pada Gambar 9.
Pada sequence diagram tersebut, diperlihatkan perilaku customer yang merupakan actor ketika melakukan login. Cusomter harus memasukkan username dan password untuk mendapatkan hak akses sebagai pengguna. Kemudian controller akan melakukan autentikasi terhadap input yang diberikan customer. Jika input yang diberikan valid, controller akan mengarahkan customer memberikan hak akses sebagai pengguna. jika input yang diberikan tidak valid, controller akan memberikan pesan kesalahan. Beberapa contoh hasil perancangan controller dapat dilihat pada Lampiran 4. Implementasi Sistem Menggunakan ORM Setelah pada tahap analisis masalah ditemukan empat aspek ketidakpastian tersebut, akan diimplementasikan ORM. Tool yang digunakan untuk menerapkan konsep ORM ini adalah Hibernate. Sebelum implementasi ORM, dilakukan beberapa konfigurasi pada aplikasi ecommerce. 1 Konfigurasi basis data Tahap ini merupakan tahap awal implementasi aplikasi e-commerce. Konfigurasi ini disimpan dengan nama file jdbc.properties. Isi dari file tersebut
Gambar 9 Sequence diagram untuk proses login customer
10
adalah sebagai berikut: 1 2 3 4 5
entitas lain, yaitu entitas Customer. Tabel customer dapat dilihat pada Gambar 10.
jdbc.driver_class =com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/ecommerce jdbc.username = root jdbc.password = admin hibernate.dialect = org.hibernate.dialect.MySQLDialect
File konfigurasi tersebut adalah file yang berfungsi untuk menghubungkan aplikasi dengan basis data yang berisi username, password, port dan nama basis data, dan dialect yang akan digunakan untuk basis data tersebut. 2 Membuat kelas DTO ( Data Transfer Object ) DTO merupakan kelas yang merepresentasikan setiap tabel pada basis data. DTO dibuat berdasarkan UML class diagram yang telah dirancang. DTO berisi kelas JavaBean yang setiap propertinya akan merepresentasikan atribut-atribut pada tabel. Uraian berikut menjelaskan implementasi ORM untuk mengatasi masalah ketidaksesuaian pada aspek granularity, identitas, asosiasi, dan navigasi data. a Aspek Granularity Pada tahap analisis, ditemukan ketidaksesuaian tipe data yang dimiliki Customer, yaitu tipe data Address. Pada basis data relasional, tipe data seperti ini tidak ada, sehingga kita perlu melakukan penyesuaian dengan memberikan anotasi pada kelas Address dengan @Embeddable. Kedua kelas tersebut bisa dilihat sebagai berikut: @Entity @Table(name="T_CUSTOMER") public class Customer implements Serializable{ @Id @GeneratedValue private Long id; private Address address; @Embeddable public class Address implements Serializable { @Column (name="street", nullable=true) private String street; @Column (name="provinsi", nullable=true)private String provinsi; @Column (name="town", nullable=true) private String town;
Gambar 10 Tabel Customer dengan komponen Address b Aspek Identitas ORM mengatasi ketidaksesuaian pada aspek identitas dengan menambah properti identity pada setiap entitas atau kelas DTO seperti pada potongan program berikut: 1 2 3 4 5 6 7 8
@Entity @Table(name="T_CATEGORY") public class Category implements Serializable { @Id @GeneratedValue private Long id; private String type; private String description; //metode getter dan setter
Kode pada baris pertama dan kedua menandakan bahwa kelas tersebut mewakili sebuah entitas pada basis data dengan nama tabel T_CATEGORY. @Id pada baris ke empat merupakan properti yang merepresentasikan primary key, secara lojik properti @Id pada kelas a berbeda dengan @Id pada kelas b. Dengan demikian pengujian apakah isi kelas a sama dengan kelas b bisa ditulis seperti berikut: a.getid().equals(b.getId()). Properti @GeneratedValue (strategy = GenerationType.AUTO) merupakan pengisian id yang secara otomasi seperti auto_increment pada tabel relasional. c Aspek Asosiasi Asosiasi antara dua entitas terdiri atas oneto-one, one-to-many, dan many-to-many. Pada penelitian ini, ditemukan asosiasi one-to-one, dan one-to-many.
Anotasi @Embeddable pada kelas Address menandai jika kelas tersebut bukan merupakan entitas, tetapi komponen, yang artinya, komponen Address melekat pada
11
¾ One-to-one
7
private String description;
Class Book @Entity @Table(name="T_BOOK") public class Book implements Serializable { 4 @Id 5 @GeneratedValue 6 private Long id; 7 @Column (name="judul") 8 private String judul; 9 @ManyToOne 10 @JoinColumn(name="category_id", nullable=false) 11 private Category category; 1 2 3
Gambar 11 Pemetaan asosiasi one-to-one Pemetaan asosiasi one-to-one dapat dilihat pada Gambar 11 antara entitas Order dengan entitas Payment. 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6
Class Payment @Entity @Table(name ="T_PAYMENT") public class Payment implements Serializable { @Id @GeneratedValue private Long id; @OneToOne @JoinColumn(name="order_id") private Order order; Class Order @Entity @Table(name="T_ORDER") public class Order Serializable { @Id @GeneratedValue private Long id;
Pada kelas Category tidak terdapat atribut objek Book, ini berarti navigasi yang dimiliki antara dua entitas tersebut adalah satu arah. Pada kode baris sembilan kelas Book, terdapat anotasi @ManyToOne, yang menandakan hubungan yang terjadi antara kedua kelas tersebut adalah many-to-one. Pada baris sepuluh terdapat anotasi @JoinColumn. Ini berarti id entitas Category akan dimasukkan ke tabel T_BOOK.
implements
3 Membuat Fungsi Akses Data
Pada asosiasi one-to-one, terdapat dua kemungkinan navigasi yang dimiliki, yaitu satu arah (unidirectional) atau dua arah (bidirectional). Asosiasi yang terjadi antara dua entitas di atas, yaitu Payment dan Order adalah asosiasi satu arah. Ini artinya, entitas Order tidak bisa mengakses entitas Payment.
Untuk mengakses data dari basis data yang sebelumnya telah dibuat di MySql, digunakan DAO pattern. Pattern ini berfungsi untuk mengenkapsulasi fungsi akses data sehingga objek yang memerlukan fungsi akses tersebut hanya memanggil objek DAO tanpa perlu tahu detail proses akses tersebut. DAO pattern pada akses data customer dapat dilihat pada Gambar 13.
¾ Many-to-one Asosiasi ini terjadi antara entitas Category dan entitas Book. Ilustrasi asosiasi tersebut bisa dilihat pada Gambar 12.
Gambar 13 DAO pattern Gambar 12 Pemetaan asosiasi many-to-one 1 2 3 4 5 6
Class Category @Entity @Table(name="T_CATEGORY") public class Category Serializable { @Id @GeneratedValue private Long id; private String type;
implements
Sebelum melakukan proses manipulasi basis data, properti basis data harus dikenali dulu oleh aplikasi seperti username, password, url, dan driver basis data yang digunakan. Ini dilakukan agar proses koneksi aplikasi dan basis data bisa berjalan. Agar dikenali oleh aplikasi, file yang berisi properti koneksi basis data, yaitu jdbc.properties, harus didaftarkan ke
12
aplikasi melalui objek dataSource sebagai penyedia koneksi basis data. File konfigurasi koneksi basis data ini bisa dilihat sebagai berikut:
getHibernateTemplate().get(Book.class, id); }
public void saveBook(Book book){ this.getHibernateTemplate().saveOrUpdate (book); }
SessionFactory membuat objek Session yang diperlukan untuk proses transaksi yang berlangsung saat mengakses data. Session merupakan objek yang hanya sekali pakai, digunakan untuk melakukan transaksi basis data dan setelah selesai transaksi, Session langsung ditutup. Siklus hidup objek Session berbeda dengan objek SessionFactory , SessionFactory dibuat sekali sepanjang aplikasi berjalan, sedangkan Session dibuat selama proses suatu transaksi berlangsung. Session bertanggungjawab selama proses transaksi, Session tidak bisa ditutup sebelum transaksi berhasil dan Session akan melakukan rollback apabila transaksi gagal. Berikut adalah konfigurasi sessionFactory, 1 2
3 4
p:dataSource-ref="dataSource" p:configLocation="/WEBINF/hibernate.c fg.xml"> 5 <property name="hibernateProperties"> 6 <props> 7 <prop key="dialect">${hibernate. dialect} 8 9 10 11
Baris ke empat konfigurasi di atas menandakan letak file konfigurasi Hibernate yang terletak di folder WEB-INF. File ini berisi konfigurasi pemetaan antara tabel dan kelas java. Jadi, kalau pengguna ingin mendapatkan daftar buku, program yang akan dijalankan adalah sebagai berikut: public List getBookList(){ return getHibernateTemplate().find("from Book"); }
untuk mendapatkan objek buku berdasarkan id, public Book getBook(Long id){ return (Book)
untuk menyimpan objek buku,
untuk menghapus objek buku berdasarkan id, public void deleteBook(Long id){ getHibernateTemplate().delete(getBook(id ));}
Method getHibernateTemplate() tersebut berfungsi membersihkan lapisan aplikasi dari kode pengaksesan data berulangulang. Metode ini merupakan metode yang didapat dari kelas HibernateDaoSupport dan akan membuat objek Session yang digunakan untuk proses transaksi basis data. 4 Membuat Skema Basis Data Skema basis data dibuat di file konfigurasi hibernate.cfg.xml. Pada penelitian ini, basis data dibuat terpisah dari aplikasi, sehingga basis data yang digunakan adalah basis data yang sudah siap digunakan. Untuk menyesuaikan keadaan ini, konfigurasi pada hibernate.cfg.xml dibuat seperti ini, <property name="hibernate.hbm2ddl.auto">update
Property dari hibernate.hbm2dll.auto diatur update untuk mempertahankan skema basis data yang sudah ada. Ada dua cara lagi untuk mengatur skema basis data, yaitu • Create-drop: Hibernate akan membuat semua tabel pada saat inisialisasi SessionFactory. Begitu SessionFactory ditutup, semua tabel akan dihilangkan. • Create: Hibernate akan membuat tabel pada saat inisialisasi SessionFactory. Hibernate tidak akan membuang tabel ketika SessionFactory ditutup. Selain properti hibernate.hbm.2ll.auto, properti lain yang digunakan untuk mengatur skema basis data adalah properti hibernate.show_sql. Properti tersebut diatur true agar dapat menampilkan query sql di konsol output sehingga kita bisa memeriksa query yang dijalankan. Evaluasi Sistem ORM memodelkan entitas pada domain permasalahan berdasarkan konsep bisnis yang sesungguhnya, bukan berdasarkan struktur basis
13
data. Ini akan mempermudah developer aplikasi dalam mengembangkan aplikasi. Pada penelitian ini, keuntungan diterapkannya ORM dengan menggunakan Hibernate terlihat dari beberapa segi, yaitu produktivitas, pemeliharaan, kinerja, dan bebas vendor. • Produktivitas Pada aplikasi ini dibuat sejumlah kelas dao yang berguna mengatur akses basis data, diantaranya UserDao, BookDao, CategoryDao, OrderDao, ItemDao.. Tanpa menggunakan ORM, kode yang dibuat seperti ini, public class CategoryDao { private Connection conn; private String driver = “com.mysql.jdbc.Driver”; private String url = “jdbc:mysql://localhost/web”; private String username = “root”; private String password = “admin”; public CategoryDao(){ Class.forName(driver); conn = DriverManager.getConnection(url,user, pass); } public void save(Category c){ String sql = “INSERT INTO T_CATEGORY VALUES(?,?)”; PreparedStatement psInsert = conn.prepareStatement(sql); psInsert.setString(1, c.getName()); psInsert.executeUpdate(); }}
Ketika menggunakan ORM, kode yang dibuat seperti ini, @Repository @Transactional public class CategoryDaoImpl implements CategoryDao{ private SessionFactory sessionFactory; @Autowired public void setSessionFactory(SessionFactory sf){ this.sessionFactory = sf; } public void save(Category b) { sessionFactory.getCurrentSession().sa veOrUpdate(b); }
Di sini ORM mengeliminasi kode-kode yang rumit dan membiarkan pengembang berkonsentrasi pada proses bisnis, sehingga
ini akan mengurangi waktu pengembangan perangkat lunak secara signifikan. • Pemeliharaan ORM juga terbukti mengurangi baris-baris kode ( lines of code) pada aplikasi sehingga lebih mudah dimengerti oleh developer. Baris kode yang lebih sedikit akan memudahkan pemeliharaan aplikasi. • Kinerja Dengan menggunakan teknik connection pool, proses koneksi tidak dilakukan secara berulang ketika berinteraksi dengan basis data. Teknik ini berguna untuk mengotomasi proses koneksi pada basis data. Berikut ini konfigurasi connection pool pada aplikasi ini. <property name="hibernate.c3p0.min_size">5 <property name="hibernate.c3p0.max_size">20 <property name="hibernate.c3p0.timeout">300 <property name="hibernate.c3p0.max_statements"> 50 <property name="hibernate.c3p0.idle_test_period ">3000 <property name="hibernate.show_sql">true <property name="hibernate.hbm2ddl.auto">update< /property>
Penerapan ORM dengan menggunakan design pattern, yaitu DAO pattern dan DTO pattern membuat kode aplikasi lebih terstruktur sehingga mempermudah pengembangan aplikasi selanjutnya. KESIMPULAN DAN SARAN Kesimpulan Teknologi Object Relational Mapping merupakan solusi untuk menjembatani pendekatan berorientasi objek dengan konsep basis data relasional. Pada penelitian ini, dibuktikan beberapa ketidaksesuaian antara pendekatan berorientasi objek dengan basis data relasional, yaitu pada aspek granularity, identitas, dan asosiasi. Dengan menerapkan konsep ORM pada aplikasi e-commerce ini, ketidaksesuaian itu bisa diatasi sehingga aplikasi bisa dikembangkan secara efektif dan efisien.
14
Saran Banyak fitur e-commerce yang belum diterapkan pada aplikasi ini. Penelitian selanjutnya diharapkan menambah fitur yang belum ada. Kemudian, aplikasi e-commerce ini bisa dikembangkan lebih lanjut dengan menerapkan design pattern pada proses bisnisnya. Design pattern berbeda yang bisa diterapkan antara lain: • Observer pattern Pattern ini digunakan untuk mengakomodasi proses notifikasi ke email customer yang berlangganan berita ketika ada berita terbaru. • Strategy pattern Pattern ini digunakan untuk mengenkapsulasi metode pembayaran yang bermacam-macam, sehingga objek customer hanya perlu menyediakan interface pembayaran. DAFTAR PUSTAKA Bauer C, King G. 2005. Hibernate in Action. United States : Manning. Bauer C, King G. 2007. Java Persistence with Hibernate. United States : Manning. Connolly TM, Carolyn EB. 2002. Database System: A Practical Approach To Design, Implementation, and Management. England: Addison-Wesley.
Fowler M. 2004. UML Distilled : A Brief Guide to the Standard Object Modelling Language 3rd Edition. United States: Addison-Wesley. Gamma E, Helm R, Johnson R, Vlissides J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. United States: Addison-Wesley. Hartono J. 1999. Pengenalan Yogyakarta: Andi.
Komputer.
Hu WC. 2009. Selected Readings on Electronic Commerce Technologies : Contemporary Applications.United States: IGI Global. Nuryani. 2001. E-commerce, dalam Berita Pajak.N0.1438/Tahun XXXIII/1 Maret 2001,hlm.30 Purbo OW. 2000. Mengenal E-commerce. Jakarta:PT. Elex Media Komputindo. Sakti NW. 2001. Perpajakan Dalam Ecommerce. Belajar Dari Jepang, dalam Berita Pajak No.1443/Tahun XXXIII/15 Mei 2001, hlm.35 Schach SR. 2006. Object Oriented and Classical Software Engineering. Singapura: McGraw-Hill Education. Wampler BE. 2003. The Essence ObjectOriented Programming with Java and UML. United States: Addison-Wesley.
Crawford W, Kaplan J. 2003. J2EE Design Patterns. United States: O’reilly.
15
LAMPIRAN
16
Lampiran 1 Diagram Use case e-commerce
17
Lanjutan Lampiran 1
Dokumen Use case e-commerce 1.
Deskripsi untuk use case register
Use Case Brief Description
Register Seorang user yang belum terdaftar sebagai anggota, bisa mendaftarkan diri sebagai anggota
Actor
User
Precondition
User belum terdaftar sebagai anggota Use case ini dimulai saat user ingin mendaftarkan diri sebagai anggota dan memilih fungsi register. User harus mengisi data diri dan melengkapinya dan
Main Flow
kemudian memilih fungsi submit. Sistem akan mengirimkan kode aktivasi, username, dan password secara otomatis ke email yang didaftarkan jika berhasil.
Post Condition
Jika sukes, sistem akan mengirimkan pesan sukses Sistem akan menampilkan pesan kesalahan yang sesuai jika user tidak
Alternatif flow
melengkapi data registrasi dan menampilkan kembali form registrasi untuk dilengkapi kembali oleh user
2.
Deskripsi untuk use case login
Use Case Brief Description
Login User yang sudah terdaftar, bisa masuk ke sistem sebagai anggota. Dengan menjadi anggota, seorang customer mendapatkan otoritas sebagai anggota
Actor
User
Precondition
Anynomous user bisa masuk ke sistem sebagai anggota 1. User mengisi username dan password
Main Flow
2. Sistem melakukan proses autentikasi 3. Jika berhasil, user bisa masuk sebagai anggota
Post Condition Alternatif flow
User akan masuk ke sistem sebagai anggota ditandai dengan nama user sebagai anggota akan tampil Jika gagal, user harus mengisi kembali username dan password
18
3.
Deskripsi untuk use case search
Use Case Brief Description Actor precondition
Search Seorang user (baik yang terdaftar sebagai anggota atau tidak) bisa menggunakan fasilitas search untuk mencari buku yang diinginkan User User menggunakan browser internet untuk memasuki halaman web buku yang dicari. Use case ini dimulai saat user hendak mencari buku yang ingin dibeli dan
Main Flow
memasukkan keyword pada textbox search lalu mengklik fungsi go atau search.
sistem akan menampilkan daftar buku yang sesuai dengan query user jika Post Condition
buku-buku tersebut ada di database. Jika tidak ada, sistem akan menampilkan pesan.
Alternatif flow
4.
N/A
Deskripsi untuk use case logout
Use Case
Logout
Brief Description
Seorang user keluar dari system
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Use case ini dimulai saat user hendak keluar dari aplikasi web
Post Condition
sistem akan menampilkan pesan sukses
Alternatif flow
N/A
5.
Deskripsi untuk use case edit cart
Use Case
Edit cart
Brief Description
Seorang user bisa mengedit jumlah item yang hendak dipesan
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Use case ini dimulai saat user masuk ke shopping cart dan hendak menambah atau mengurangi item yang akan dipesan
Post Condition
sistem akan menampilkan pesan sukses
Alternatif flow
N/A
19
6.
Deskripsi untuk use case update cart
Use Case
Update cart
Brief Description
Seorang user bisa mengupdate jumlah item yang akan dipesan
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Post Condition Alternatif flow
7.
Setelah user mengedit jumlah item, user mengklik tombol Update cart. Hal ini akan mempengaruhi total harga yang harus dibayar user. sistem akan menampilkan cart yang sesuai dengan pesan user baik jumlah item maupun total harga. N/A
Deskripsi untuk use case delete cart
Use Case Brief Description
Delete cart Seorang user bisa membatalkan item yang akan dipesan dengan fasilitas Delete cart
Actor
User
precondition
User yang teridentifikasi sebagai anggota Use case ini dimulai saat user hendak menghapus item yang akan dipesan.
Main Flow
User mengklik tombol delete cart yang sebaris dengan item yang hendak dihapus.
Post Condition Alternatif flow
8.
sistem akan menghapus item dari shopping cart dan menampilkan shopping cart yang sesuai dengan pesanan user N/A
Deskripsi untuk use case change name
Use Case Brief Description
Change name User bisa mengubah nama di sistem dengan memanfaatkan fasilitas change name
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Use case ini dimulai saat user hendak mengubah nama di sistem. User berada pada profile view dan mengklik tombol change name.
Post Condition
sistem akan menampilkan pesan sukses
Alternatif flow
N/A
20
9.
Deskripsi untuk use case change email
Use Case Brief Description
Change email User bisa mengubah email di sistem dengan memanfaatkan fasilitas change email
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Use case ini dimulai saat user hendak mengubah email di sistem. User berada pada profile view dan mengklik tombol change email.
Post Condition
sistem akan menampilkan pesan sukses
Alternatif flow
N/A
10. Deskripsi untuk use case change password Use Case Brief Description
Change password User bisa mengubah password di sistem dengan memanfaatkan fasilitas change password
Actor
User
precondition
User yang teridentifikasi sebagai anggota
Main Flow
Use case ini dimulai saat user hendak mengubah password di sistem. User berada pada profile view dan mengklik tombol change password.
Post Condition
sistem akan menampilkan pesan sukses
Alternatif flow
N/A
11. Deskripsi untuk use case add to cart Use Case Brief Description
Add to cart User bisa memanfaatkan fasilitas add to cart untuk menambah buku yang akan dipesan pada shopping cart
Actor
User
precondition
User
Main Flow
Use case ini dimulai saat user ingin membeli sebuah buku dan mengklik tombol add to cart. Buku tersebut akan masuk ke shopping cart
Post Condition
sistem akan menampilkan shopping cart
Alternatif flow
N/A
21
12. Deskripsi untuk use case add to wishlist Use Case Brief Description
Add to wishlist User bisa memanfaatkan fasilitas add to wishlist untuk menambah buku yang akan mungkin akan dipesan di lain hari.
Actor
User
precondition
User Use case ini dimulai saat user menginginkan sebuah buku dan buku tersebut
Main Flow
tidak dibelinya pada saat itu tapi mungkin di lain hari. User mengklik tombol add to wishlist. Buku tersebut akan masuk ke wishlist
Post Condition
sistem akan menampilkan wishlist
Alternatif flow
N/A
13. Deskripsi untuk use case give a comment Use Case Brief Description Actor precondition
Main Flow
Post Condition Alternatif flow
Give a comment Seorang user (baik yang terdaftar sebagai anggota atau tidak) bisa memberikan komentar terhadap buku apapun. User User masuk ke halaman web dan ingin memberikan komentar terhadap buku tertentu Use case ini dimulai saat user masuk ke halaman rincian buku dan memilih fungsi beri komentar. sistem akan menampilkan pesan kalau komentar yang diberikan sudah masuk dan hanya menunggu respon dari admin Sistem akan menampilkan pesan kesalahan jika user tidak melengkapi data
22
Lampiran 2 Desain Konseptual Basis Data
23
Lampiran 3 Desain Struktur Fisik Basis Data
24
Lampiran 4 Sequence Diagram e-commerce 1.
Melakukan register
1.
Pengguna menggunakan suatu browser untuk membuka homepage sistem
2.
Pengguna melakukan register dengan mengklik submit setelah mengisi data yang diperlukan
3.
validatorForm akan melakukan validitas data pengguna
4.
Jika ada yang salah atau pengisian data tidak benar, muncul pesan kesalahan (if not valid), dan pengguna harus mengisi data kembali dengan benar
5.
Jika berhasil, validatorForm akan menyimpan data tersebut ke AccountDB, dan menampilkan pesan berhasil. validatorForm juga akan mengirimkan data tersebut ke email pengguna
25
2.
Melakukan login
1.
Pengguna memasukkan username dan password untuk bisa masuk ke sistem di LoginPage
2.
LoginValidator melakukan autentikasi data pengguna
3.
Jika ada yang salah (if not valid), validatorForm akan menampilkan kesalahan, dan pengguna harus memasukkan username dan password kembali dengan benar
4.
Jika login tidak berhasil (login failed), loginValidator menampilkan pesan kesalahan
5.
Jika berhasil (login success), loginValidator akan menampilkan pesan berhasil, dan pengguna sudah memiliki otoritas sebagai anggota
26
3.
Melakukan pencarian
1.
Pengguna melakukan pencarian buku dengan memasukkan keyword di searchPage
2.
SearchAction akan melakukan pencarian buku di basisdata sesuai dengan deskripsi buku
3.
BookDB akan memberikan data yang sesuai dengan query pengguna
4.
SearchAction akan menampilkan list book yang sesuai dengan desksipsi buku
27
4. Melakukan add to cart
1.
Seorang customer memilih buku di aCatalog
2.
Objek aItem akan di create ketika sebuah buku dipilih
3.
aItem akan memeriksa stok buku yang ada
4.
Jika sudah habis, sistem akan menampilkan pesan “buku habis”
5.
Jika masih tersedia, aIitem akan meminta harga dan deskripsi buku dari aBook
6.
aItem akan di simpan di shopping cart
28
5. Memberikan komentar terhadap sebuah buku
1.
seorang customer memberikan komentar terhadap sebuah buku
2.
sistem akan memeriksa (userValidator), apakah customer tersebut telah memiliki otoritas sebagai anggota atau tidak memiliki otoritas
3.
jika tidak memiliki otoritas, userValidator akan menampilkan form data yang harus di isi customer
4.
setelah mengisi data, customer bisa memberikan komentar terhadap sebuah buku
5.
komentar akan disimpan di CommentarReviewDB
29
6. Melakukan edit sebuah item
1.
seorang customer memilih item yang akan di edit di shopping cart
2.
customer mengedit jumlah buku yang akan dipesan
3.
sistem akan memeriksa, apakah stok masih tersedia
4.
jika tidak tersedia, sistem akan menampilkan pesan kesalahan
5.
jika masih tersedia, sistem akan menyimpan perubahan tersebut di shopping cart
30
7. Menghapus sebuah item
1.
seorang customer memilih item yang akan di delete
2.
aShoppingCart mengambil objek item
3.
item akan mengembalikan nilai jumlah stok ke objek aBook
4.
item akan terhapus di aShoppingCart (ditandai dengan ‘x’ pada aktivitas objek item)
31
8. Melakukan add to wishlist
1.
seorang customer memilih buku di aCatalog
2.
objek item akan di create, dan meminta data harga dan deskripsi buku tersebut
3.
objek book akan memberikan informasi harga dan deskripsi buku
4.
item tersebut akan disimpan di aWishlist
32
9. Mengubah profile customer
1.
seorang customer mengedit accountnya
2.
customer tersebut memilih edit username untuk mengedit username
3.
customer tersebut memilih edit email untuk mengedit email
4.
customer tersebut memilih edit password untuk mengedit password
5.
perubahan informasi customer tersebut disimpan ke CustomerDB
33