Persistence Problem dalam Dunia Object Oriented Language


Selama bertahun-tahun masalah mengelola persistent data mejadi topik panas dalam dunia pemrograman berorientasi object. Data menurut masa hidup (daur hidup) dalam aplikasi komputer dapat dibedakan menjadi 2 jenis yaitu persistent data dan non persistent data. Persistent data adalah data yang dapat digunakan kembali jika komputer dimana aplikasi kembali dinyalakan. Sedangkan non-persistent data adalah kebalikannya. Masa hidup sebuah non-persistent data hanya selama aplikasi tersebut di gunakan. Jika komputer dimana aplikasi tersebut down maka data tersebut akan hilang.

Jika kita berbicara mengenai persistent data dalam sebuah aplikasi, maka kita bicara mengenai Relational Database dengan SQL sebagai senjata utamanya. Relational Database tidak terkait dengan salah satu bahasa pemrograman komputer demikian pula sebaliknya. Perkembangan teknologi relational database berjalan bersama seiring dengan perkembangan bahasa pemrograman komputer. Bicara mengenai relational database adalah bicara mengenai entitas. Relational Database menyediakan fasilitas sharing data antar aplikasi maupun antar bagian aplikasi (contoh: antara transactional system & reporting system) sehingga relational database disebut dengan enterprise-wide representation of business entities (C. Bauer, Manning: Hibernate In Action).

Dalam dunia pemrograman OO, semua entitas berupa class. Class memiliki property dan method yang menunjukan behaviour dari class tersebut. Setiap entitas “berkomunikasi” dengan entitas yang lain dengan method-method yang dimilikinya tersebut. Selain itu behavour entitas juga bisa diketahui dari method yang dimilikinya. Prinsip pemrograman OO mengajarkan bahwa property dalam class sebaiknya di encapsulasi menggunakan method untuk menghindari manipulasi data secara langsung. Hal ini berbeda dengan entitas dalam database yang hanya memiliki property saja sehingga bisa di manipulasi secara langsung.

SQL digunakan untuk memanipulasi database. Secara umum perintah SQL dapat dibedakan menjadi 2 jenis, Data Definition Language (DDL) digunakan untuk membuat schema database dengan menggunakan perintah CREATE dan ALTER. Sedangkan Data Manipulation Language (DML) digunakan untuk memanipulasi data-data dalam database (INSERT, UPDATE, DELETE) dan mengambil data-data dalam database (RESTRICT, PROJECT, JOIN termasuk didalamnya operasi kartesian). Terkadang kita juga menggunakan perintal SQL seperti GROUP, ORDER, dan AGGREGATE. SQL juga dapat digunakan dengan metode sub-selecting, yaitu melakukan query didalam query.

Saat ini hampir semua aplikasi yang dibangun menggunakan Database sebagai tempat menyimpan data dengan bahasa pemrograman yang digunakan pada umumnya menggunakan bahasa pemrograman yang berorientasi object. Hasil query entitas pada database berupa cartesian product, sedangkan pada OOP hasil query entitas harus berupa object. Selain itu konversi tipe data dari tipe data database dengan tipe data dalam bahasa pemrograman. juga menjadi masalah. Disamping permasalahan kompatibilitas jika terjadi migrasi database dari produk yang satu ke produk yang lainnya. Dalam paradigma OO, seharusnya migrasi database bukan suatu hambatan karena toh yang disimpan tetap berupa object yang sama. Akan tetapi kenyataanya tidak demikian, masing-masing databse engine memiliki beberapa karakteristik yang dikembangkan sendiri-sendiri meskipun sama-sama mengadopsi spesifikasi yang sama.

Perbedaan paradigma dan teknologi yang digunakan antara keduanya menyulitkan dalam melakukan transformasi dari model entitas ke model class. Seperti yang telah disebutkan diatas, entitas didalam database hanya menampilkan data sedangkan behaviour dari entitas tidak bisa diketahui. Sedangkan dalam paradigma object oriented setiap entitas terdiri dari data dan behaviour. Para pakar di bidang pemrograman OO berusaha menjembatani 2 teknologi yang berbeda ini. Sehingga muncul konsep object relational mapping (ORM), pattern Data access object (DAO) dan pattern-pattern yang lain. Produk-produk seperti EJB, Hibernate, KODO, TopLink, JDO serta yang lain serupa dengan itu digunakan untuk menjembatani perbedaan kedua teknologi ini.

3 thoughts on “Persistence Problem dalam Dunia Object Oriented Language

  1. Ping-balik: Persistence Layer dengan Hibernate « About Hibernate

  2. Ping-balik: Belajar membuat Phone Book sederhana | Herman Class

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s