Sunday, May 16, 2010

Integrasi Library Java dengan Scala - PostgreSQL JDBC4 di Scala

Scala mempunyai fasilitas untuk mengakses library Java seperti halnya saat menggunakan JDK. Pembahasan dibawah ini adalah contoh untuk mengakses library Java untuk JDBC secara langsung dari Scala. Pembahasan berikut ini menggunakan PostgreSQL (versi 8.4.3), dengan library JDBC yang bisa diperoleh di http://jdbc.postgresql.org. Driver JDBC yang diunduh adalah driver untuk JDBC4 karena JDK yang digunakan adalah OpenJDK 1.6.0. Anda bisa menggunakan JDBC3 jika masih menggunakan JDK 1.5.0. Jika anda menggunakan database lain, anda bisa menyesuaikan dengan mudah.

Persiapan


  1. Silahkan mengunduh JDBC driver untuk PostgreSQL, sesuaikan versinya dengan versi PostgreSQL yang terinstall.
  2. Buat database dan definisikan tabel serta isikan sedikit data:

% createdb --echo --template=template0 --encoding=UNICODE stmik-akakom
Password: 
CREATE DATABASE "stmik-akakom" ENCODING 'UNICODE' TEMPLATE template0;

% psql stmik-akakom
Password: 
psql (8.4.3)
Type "help" for help.

stmik-akakom=# create table mahasiswa (nim char(9), nama varchar(100));
CREATE TABLE
stmik-akakom=# insert into mahasiswa values ('123456789','Zaky A. Aditya');
INSERT 0 1
stmik-akakom=# insert into mahasiswa values ('234567890','Bambang Purnomosidi D. P.');
INSERT 0 1
stmik-akakom=# 

Perintah-perintah sesi di atas adalah perintah untuk membuat database (createdb adalah script yang dijalankan di shell, template yang digunakan adalah template0 karena kita akan menggunakan encoding UNICODE. database yang kita buat adalah "stmik-akakom". Setelah itu, kita menggunakan perintah psql untuk mengakses database yang baru kita buat tadi, perintah yang digunakan adalah CREATE TABLE untuk membuat table dan INSERT untuk memasukkan 2 data.

Setelah itu, konfigurasikan variabel lingkungan untuk CLASSPATH (Scala juga menggunakan variabel CLASSPATH).

% export CLASSPATH=$CLASSPATH:postgresql-8.4-701.jdbc4.jar:.

Source Code


Silahkan melihat pada komentar untuk penjelasan tentang koneksi menggunakan JDBC4.

/*
 * testJDBC.scala
 * Contoh source code untuk mengakses database menggunakan JDBC dari Scala
 * @author: bpdp - 16 Mei 2010
 *
*/

// import Class yang diperlukan dari JDK
import java.sql.{Connection, DriverManager, ResultSet}
import java.util.Properties

object TampilkanDaftarMahasiswa {

  // Konfigurasi URL untuk koneksi dan properti untuk koneksi
  val url = "jdbc:postgresql://localhost/stmik-akakom"
  var props = new Properties

  props setProperty("username","myname")
  props setProperty("password","mypasswd")

  // Inisialisasi driver PostgreSQL
  Class.forName("org.postgresql.Driver");

  // Koneksi ke PostgreSQL
  val connection = DriverManager getConnection(url,props)

  def main(args: Array[String]) =

    try {

      // Query menggunakan Statement
      val statement = connection createStatement (ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
      val rs = statement executeQuery "select * from mahasiswa order by nim"

      // Iterasi untuk mengambil data
      while (rs next) {
        println (rs getLong "nim")
        println (rs getString "nama")
      }

      statement close

    } catch {
      case e => e printStackTrace
    } finally {
      connection close
    }

}

Kompilasi dan Eksekusi


Untuk mengkompilasi, gunakan perintah berikut:

% scalac testJDBC.scala

Hasil dari kompilasi ini adalah sebagai berikut:

% ls -la
total 524
drwxr-xr-x 2 bpdp users   4096 May 16 20:18 .
drwxr-xr-x 5 bpdp users   4096 May 16 10:02 ..
-rw-r--r-- 1 bpdp users   2420 May 16 20:09 TampilkanDaftarMahasiswa$.class
-rw-r--r-- 1 bpdp users   1282 May 16 20:09 TampilkanDaftarMahasiswa.class
-rw-r--r-- 1 bpdp users 510170 May 16 10:02 postgresql-8.4-701.jdbc4.jar
-rw-r--r-- 1 bpdp users   1226 May 16 20:09 testJDBC.scala
%

Untuk menjalankan program, gunakan nama object:

% scala TampilkanDaftarMahasiswa
123456789
Zaky A. Aditya
234567890
Bambang Purnomosidi D. P.
%

Selamat mencoba :)