PL/SQL VS Bahasa Pemrograman (Java)

Oke… ini bukan bagian dari blog balita, jadi buat kamu yang gak sengaja nyasar pas cari tutorial gimana cara bikin pl/sql di database terus cara ngaksesnya pake bahasa java, lebih baik segera merenggang deh. Iya! Jangan merapat maksutnya. Coz nih tulisan masuk ke bagian curcolan ajah. Gw yang ababil, curcol gak jelas soal kejadian akhir-akhir ini.

Yappp.. dan begitulah. Akhir-akhir ini gw disuru belajar mandiri pl/sql (sql ama postgre tapi… bukan oracle) sama bahasa java. Terus berawal dari cari-cari materi sama tutorial cara bikinnya, gw malah jadi nemu ama yang namanya Java Stored Procedure di salah satu forum. Yang makin menambah daftar pertanyaan kenapa dan kenapa…. Yap menambah! Karena pertanyaan sejenis udah ada dari sebelum-sebelumnya.

Berhubung kayaknya gw salah nyari materi di google, gw malah nemu banyak contoh pl/sql di oracle sama cara ngaksesnya pake java. Dan ini bikin gw ingat pertanyaan yang bikin gw bertanya2 sendiri pas dapat praktikum basis data relasional di semester 3 dulu. Tepatnya pas waktu disuru bikin tugas besarnya. Pertanyaan gw adalah… kenapa c musti pl/sql?! Maksudnya gw masih bisa ngerti kenapa harus make trigger. Tapi kalo procedure, fungsi, bahkan anonymous block pl-sql??! Itu yang gw gak ngerti.

Well, pertanyaan itu c sebenernya ilang gitu ajah seiring berganti semester baru. Coz abis semester 3, gw gak nyentuh oracle lagi. Cukup MySQL dengan segala sintaks dasarnya, create-insert-update-delete. Gak pake procedure, function bahkan trigger. Dan lagian, semester 5 ke atas, kuliah gw rata2 kuliah teori. Semacam sistem manajemen basis data (tipe database sama cara kerjanya–bukan praktikum), Sistem Cerdas, Pengolahan Citra dan sejenisnya yang rata2 cuma butuh bahasa pemrograman ajah. Kalopun butuh data buat disimpen, tipenya statis yang bisa disimpen di array. Atau kalopun pake data dinamis, nyimpennya di file (tipe dat/txt/xml).

Oke… dari mana tepatnya gw mulai curhat yaaaa… Uhmm… dari PL/SQL aja kali yah.

Buat yang gak tau, PL/SQL itu semacam bahasa pemrograman di database (gw sekarang bicara pake kondisi oracle lhoh yaaa… bukan dbms lain). Jadi di sini ada bentuk if-elsif-else, ada looping (for-loop; while-loop atau loop-exit). Di dalam blok PL/SQL kita juga bisa naruh query select. Bisa pake cursor (kalo mau ngehasilin n-data) ataupun select biasa (cuma bisa ngehasilin 1 baris data aja).

Dan pas gw bikin tugas besarnya sama kelompok gw (tepatnya temen gw yang bikin, gw cari referensi ajah :p). Gw ngerasa ada yang aneh…. Kan bahasa pemrograman udah nge-cover segala bentuk conditional sama iterasi atau perulangan. Terus kenapa musti ngegunain blok PL/SQL semacam function atau procedure??! Kalo kita liat bentuk umum sistem sederhana yang pake database, cara yang berlaku tuh sekedar, taruh query yang diinginkan di bahasa pemrograman… Akses ke database dengan caranya masing2 (kalo pake java pake jdbc gitu), dapat result set, ubah ke bentuk objek yang diinginkan. Lalu tampilkan! Dan jika diperlukan pengolahan data, semuanya dilakukan di bahasa pemrograman. Kalo emang udah bisa di-cover gitu ama bahasa pemrograman… Kenapa PL/SQL musti ada?! Terutama procedure sama function!

Well, pertanyaan itu muncul lagi kemaren… Dengan rasa penasaran, gw googling plus tanya Om gw (FYI, si Om itu dosen database dan sebelumnya pernah kerja di vendor 5 tahun-an sebelum mutusin buat jadi dosen ajah) gw dapat jawaban yang kesimpulannya gini:

Kalo procedure, aplikasinya biasanya gini… Kita butuh retrieve beberapa data yang dihasilkan oleh n query, contohnya menampilkan mahasiswa yang berasal dari jurusan if, mahasiswa yang ipk di atas 3.5, mahasiswa yang lulusan tahun 2013 yang lulusan if… dan lainnya. Dengan 1 input ajah, kita mendapatkan semua row data-nya. Intinya gitu. Jadi semacam penyelubungan dari 1 input dapat dihasilkan berbagai macam output.

Kalo function, aplikasinya biasanya digunakan saat menghitung diskon di sebuah toko, kalo ada promo. Atau menghitung berapa produk gratis yang bisa diberikan pada konsumen ketika promo masih berlangsung. Terus hitung semua total pembelian, gak usah dilakukan di bahasa pemrograman. Cukup pake function ajah.

Intinya, bahasa pemrograman emang bener2 cuma buat penghubung ajah. Nerima data dari db server, tampilin dan selesai! Gitu….

Ahhh… memang mencerahkan. Tapi ini gak menjawab tentang anonymous pl/sql block di oracle sama fungsi syntax dbms_output.put_line plus kondisi if-else sama looping-nya… Ini tuh bakal dikembaliin jadi apa pas diakses ama bahasa pemrograman?! Hmm… sayang banget gw gak sempat nanyain ke si Om. Tapi yaaaaa… bisa lhah yah, minimal dah tau pl/sql procedure ama function tuh buat apa. Anggap ajah lebihnya buat latihan coding.

Well, sebenernya ada beberapa jawaban versi lain. Intinya mereka jawab kalo ini tuh tentang performansi sama network-traffic yang lebih rendah. Gitu… Dan beberapa perbandingan lain. Lengkapnya, kamu bisa liat di situs for dummies, atau kalo forum, adanya di forum dbforums.com sama di forum coderanch. Alasannya walo bisa dibantah, tapi masuk akal c….

Ringkasnya, dari dbforums.com dibandingkan antara penggunaan PL/SQL ama pengaksesan data pake JDBC. Kelebihan dari JDBC yaitu

  1. JAVA-Conventional Programming Syntax
  2. JAVA-Object Oriented
  3. JAVA-Write Once, Run Everywhere

Sedangkan kelebihan penggunaan PL/SQL:

  1. Speed & Performance
  2. Catch Query Error at Compile Time

Sedangkan simpulan dari coderanch, isu yang diangkat bisa berupa performansi sama traffic-network, tapi sebenernya ini bukan masalah mana yang lebih baik atau buruk, tapi mana yang cost-nya lebih rendah ketika diterapkan. Gitu ajah…

Yak… yang bingung… silakan menuju link2 yang udah gw kasih sebelumnya. Kali ada pencerahan. Atau kali lo mirip2 sama gw, yang hebohnya di awal tapi males2 di akhir, segera lupain. Ini toh gak bakal guna jugak. Selama kita masi jadi programmer dasar, yaaa tinggal nunggu perintah musti ngerjain apa. Masalah baik penerapan atau enggak, masalah di atasnya gimana. Ntar jugak ngerti kalo dah dapat banyak referensi gara2 lamaan ngubek2 begituan :p

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s