• Tidak ada hasil yang ditemukan

Sekilas Tentang Basis Data pada J2ME

IV Basis Data pada J2ME

IV.1 Sekilas Tentang Basis Data pada J2ME

IV Basis Data pada J2ME

IV.1 Sekilas Tentang Basis Data pada J2ME

Penyimpanan informasi/data pada perangkat mobile di J2ME dapat menggunakan dua cara yaitu: a. Menyimpan data pada suatu file yang diletakkan pada direktori res

b. Menggunakan Record Management System (RMS)

Cara pertama mempunyai kelemahan yaitu data yang telah ditulis pada file tersebut tidak dapat diubah lagi ketika MIDlet sedang runtime. Cara kedua, yaitu menggunakan RMS, adalah cara yang lazim digunakan untuk penyimpanan data pada perangkat mobile. RMS memungkinkan proses penyimpanan dan pengambilan data dapat dilakukan seperti pada basis data konvensional yaitu Create, Retrieve, Update dan Delete atau yang biasa disingkat CRUD. Pada bab ini akan dibahas mengenai RMS saja.

Spesifikasi RMS telah ada sejak MIDP 1.0. Hal ini menjanjikan bahwa perangkat mobile yang MIDPcompliant memiliki RMS. RMS menjamin integritas data yang disimpannya. Akan tetapi perlu diperhatikan thread yang menggunakan data pada RMS tersebut.

Data yang disimpan oleh RMS secara fisik dapat ditempatkan di lebih dari satu tempat. Tempat‐tempat yang biasanya dipakai antara lain pada Ram perangkat mobile dan media penyimpanan yang dapat digunakan oleh perangkat mobile seperti flash disk. Data yang disimpan dalam RMS disebut record. Record merupakan data yang berbentuk array of byte. Pustaka RMS terdapat dalam package javax.microedition.rms.

56

IV.2 RecordStore

Kelas RecordStore pada RMS berfungsi menyediakan fitur untuk menyimpan, mengupdate, mengambil dan menghapus data pada perangkat mobile. Kelas RecordStore merepresentasikan sebuah lokasi penyimpanan data permanen. Satu RecordStore dapat digunakan oleh lebih dari satu MIDlet baik pada saat bersamaan maupun terpisah. Berdasarkan spesifikasi MIDP, vendor perangkat mobile bertanggung jawab pada pemeliharaan integritas obyek RecordStore.

Antar MIDlet dapat berbagi RecordStore. Pada versi MIDP lama, sebelum MIDP 2.0, MIDlet hanya dapat mengakses obyek RecordStore selama MIDlet tersebut adalah pemilik obyek RecordStore atau masih dalam satu MIDlet suite dengan MIDlet pemilik obyek RecordStore. Pada MIDP 2.0 terdapat fitur baru di mana RecordStore dapat dibagi dengan MIDlet lain dari MIDlet suite yang berbeda dengan MIDlet pemilik RecordStore. Gambar IV‐1 mengilustrasikan dua MIDlet suite berbagi RecordStore.

Gambar IV‐2 Hubungan antara MIDlet dengan suatu RecordStore

Dalam kelas RecordStore didefinisikan tiga static method untuk membuat dan membuka obyek RecordStore. Method‐method tersebut adalah sebagai berikut:

a. static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary)

b. static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary, int authMode, boolean writable)

c. static RecordStore openRecordStore(String recordStoreName, String vendorName, String suiteName)

Masing‐masing method diatas memiliki kegunaan sendiri‐sendiri. Method pertama merupakan method untuk membuka dan membuat RecordStore yang dibuat oleh MIDlet itu sendiri atau MIDlet lain yang masih dalam satu MIDlet suite. Method kedua merupakan method untuk membuat dan mengakses RecordStore yang shared antar MIDlet suite. Method ketiga khusus digunakan untuk mengakses

57

RecordStore yang shared antar MIDlet suite. Pemanggilan method openRecordStore() dapat menimbulkan exception dikarenakan beberapa hal seperti kapasitas memori perangkat mobile yang sudah penuh (RecordStoreFullException) ataupun internal error

(RecordStoreException).

Mekanisme dari method pertama ketika dipanggil adalah mencari RecordStore dengan nama sesuai dengan parameter recordStoreName yang dimasukkan. Jika RecordStore dengan nama tersebut ditemukan maka RecordStore itu akan dibuka. Jika tidak terdapat RecordStore dengan nama tersebut maka akan dilihat nilai dari parameter createIfNecessary yang diberikan. Jika nilainya true maka akan dibuat sebuah RecordStore baru dengan nama seperti pada parameter recordStoreName. Jika nilainya false maka tidak akan dibuat RecordStore baru. Pemberian nama untuk RecordStore harus memenuhi persyaratan sebagai berikut:

a. Panjang sebuah nama 32 Unicode character

b. Nama harus memperhatikan huruf kapital dan huruf non kapital (case sensitive) c. Nama harus unik di dalam sebuah MIDlet suite

Method kedua digunakan untuk membuka (mungkin juga menciptakan) RecordStore yang dapat

diakses oleh MIDlet baik dalam MIDlet suite yang sama ataupun MIDlet suite yang berbeda. RecordStore yang tercipta dari pemanggilan method ini menjadi milik MIDlet suite yang menciptakannya meskipun dapat diakses oleh MIDlet suite lain. Pada method kedua didefinisikan mode akses RecordStore apada parameter authMode. Mode akses ada dua jenis yaitu akses yang hanya mengijinkan pemilik RecordStore dan mode akses yang mengijinkan MIDlet suite lain untuk menggunakan RecordStore. Parameter writeable ditujukan untuk MIDlet suite lain yang mengakses RecordStore. Jika RecordStore hanya dapat diakses MIDlet suite pemiliknya maka nilai parameter ini diabaikan. Pemilik RecordStore selalu dapat menulis pada RecordStore, jadi parameter writeable hanya akan berpengaruh pada MIdlet suite lain apakah diijinkan menulis pada RecordStore atau tidak. Berikut akan disajikan potongan kode program yang menunjukkan cara pemanggilan method kedua.

Listing IV‐1 Contoh pembuatan RecordStore yang dapat diakses MIDlet suite lain

import javax.microedition.rms.*; ... try{ RecordStore rs = RecordStore.openRecordStore("MyData",true, RecordStore.AUTHMODE_ANY,false); rs.deleteRecord(1); rs.closeRecordStore(); }catch{RecordStoreException rse){

58

Tabel IV‐1 Konstanta Akses Informasi RecordStore

Nilai Parameter Deskripsi

AUTHMODE_PRIVATE Akses hanya dibatasi pada suite tempat obyek

RecordStore bersangkutan ditempatkan

AUTHMODE_ANY Mengijinkan akses oleh semua MIDlet di suite manapun. Gunakan parameter ini untuk membuat

Obyek

RecordStore yang sharable

Method ketiga digunakan untuk membuka RecordStore milik MIDlet suite lain. Suatu MIDlet suite

dapat mengakses RecordStore milik MIDlet suite yang lain hanya jika RecordStore tersebut diijinkan untuk diakses oleh MIDlet suite lain selain pemiliknya. Jika tidak mendapatkan ijin maka SecurityException akan terjadi. Parameter vendorName dan suiteName harus disesuaikan dengan Midlet-Vendor dan Midlet-Name pada file JAD (lebih lanjut tentang file JAD dijelaskan di Bab 8). Jika method ini digunakan oleh MIDlet dalam MIDlet suite pemilik RecordStore maka efeknya akan sama dengan menggunakan method pertama tanpa membuat RecordStore baru openRecordStore(recordStoreName, false). Berikut disajikan potongan kode program contoh pemanggilan method ketiga

Listing IV‐2 Contoh pengambilan RecordStore yang Dibuat MIDlet suite lain

import javax.microedition.rms.*; ... try{

RecordStore rs =

RecordStore.openRecordStore("MyData",

"Sun Microsystems", "Jupiter");

byte[] data = rs.getRecord(1);

rs.closeRecordStore(); }catch(RecordStoreException rse){

//tangani error di sini }

Setelah obyek RecordStore yang telah dibuka dapat diperoleh informasi berkenaan dengan obyek tersebut. Informasi tersebut antara lain mengenai nama, ukuran, versi, dan waktu terakhir obyek RecordStore dimodifikasi. Method‐method untuk mengetahui informasi RecordStore dapat dilihat pada table IV‐2.

59

Tabel IV‐2 Daftar method untuk mengambil informasi RecordStore

Nama Method Deskripsi

String getName() Mengembalikan nama dari obyek RecordStore

int getSize() Mengembalikan ukuran ruang dalam byte yang ditempati

oleh obyek RecordStore. Ukuran tersebut meliputi

overhead termasuk overhead yang diperlukan untuk

implementasi stuktur data yang diterapkan oleh obyek RecordStore.

int getSizeAvailable() Mengembalikan tempat yang masih tersisa pada

RecordStore

long getLastModified() Mengembalikan informasi waktu kapan RecordStore

dimodifikasi terakhir kali. Penulisan informasi waktu ini menggunakan format yang sama dengan yang digunakan oleh System.currentTimeMillis().

int getVersion() Mengembalikan versi RecordStore. Setiap obyek

RecordStore dimodifikasi, seperti waktu ketika record ditambah, dimodifikasi, atau dihapus, maka versinya ditambah satu.

int getNumRecords() Mengembalikan jumlah data/record yang saat ini ada

dalam sebuah obyek RecordStore.

Obyek RecordStore yang tidak digunakan lagi sebaiknya segera dihapus untuk menyediakan tempat bagi RecordStore yang lainnya. Untuk penghapusan RecordStore terdapat static method dari kelas RecordStore sebagai berikut

static void deleteRecordStore(String recordStoreName)

Sebelum menghapus suatu obyek RecordStore pastikan tidak ada MIDlet yang sedang/masih menggunakanya atau memerlukan data dalam RecordStore tersebut. RecordStoreException akan dihasilkan jika RecordStore yang akan dihapus sedang dibuka oleh MIDlet lain baik dalam satu MIDlet suite atau lain MIDlet suite. RecordStoreNotFoundException akan muncul ketika RecordStore yang akan dihapus tidak tersedia.

Untuk mengetahui RecordStore apa saja yang dimiliki oleh suatu MIDlet suite maka RecordStore menyediakan sebuah static method untuk mendapatkan nama RecordStore dari suatu MIDlet suite.

Method tersebut adalah sebagai berikut.

60

RecordStore yang ditampilkan hanyalah RecordStore milik dari MIDlet suite tempat MIDlet pemangil static method tersebut.

Dokumen terkait