Java Database dengan Commons DBUtils

Mungkin saya yang kuper tapi, saya emang baru nemu dan merasakan enaknya menggunakan library ini saat membuat project terakhir saya di Java. Dari situs pembuatnya: Commons DBUtils adalah beberapa kelas kecil yang didesain untuk membuat pemrograman JDBC menjadi lebih mudah. Well, emang bener sih. Secara ngoding (baca:memprogram) database di Java yang sebenernya mudah, tapi proses inisialisasi dan pembersihan resource yang sangat membosankan dan bila dilakukan berulang2 dijamin mampu membikin tangan kita kriting.

Lihat saja:


public Connection getConnection() throws Exception {
  InitialContext ctx = new InitialContext();
  DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/TestDB");
  Connection conn = ds.getConnection();
  return conn;
}

public void queryDatabase() {
  Connection conn = null;
  Statement s = null;
  ResultSet rs = null;
  try {
    conn = getConnection();
    s = conn.createStatement();
    rs = s.executeQuery("SELECT * FROM mytable");
    while(rs.next()) {
      System.out.println(rs.getString(0));
    }
  } catch(Exception ex) {
    ex.printStackTrace();
  } finally {
    if (rs != null) {
      try { rs.close(); }
      catch(Exception ex) {}
    }
    if (s != null) {
      try { s.close(); }
      catch(Exception ex) {}
    }
    if (conn != null) {
      try { conn.close(); }
      catch(Exception ex) {}
    }
  }
}

Phuh, … cape. Untuk satu query aja dah harus bersihkan 3 resource. Sebel kan? Untungnya, ada beberapa programmer yang sama sebelnya sampe akhirnya membuat library ini. Sedikit contoh penggunaan DBUtils:

// kita masih pakai fungsi getConnection diatas.

function queryDatabaseDBUtils() throws Exception {
  ArrayList result = null;
  QueryRunner run = new QueryRunner();
  Connection conn = getConnection();
  try {
    ResultSetHandler h = new MapListHandler();
    ArrayList result = (ArrayList) run.query(conn, "SELECT * FROM mytable", h);
    for(Iterator it = result.iterator(); it.hasNext(); ) {
      Map row = it.next();
      System.out.println(row.get("username"));
    }
  } finally {
    DBUtils.closeQuietly(conn);
  }
}

Kelas QueryRunner akan melakukan pembersihan sendiri. Jadi kita ga perlu ngurusin pembersihan dan inisialisasi Statement atau ResultSet. Ditambah lagi, parameterized command jadi lebih gampang.

run.query(conn, "SELECT * FROM mytable WHERE username = ? AND password = ?",
  new Object[] {"ferdhie", "hasan"}, resultHandler);

Saya juga menilai library ini cocok untuk saya yang secara alami membenci konfigurasi XML. Semoga membantu di kerjaan anda.

PS: saya ada satu kelas untuk lebih mempercepat proses manipulasi JDBC anda. Silahkan cek http://ferdianto.com/snippets/detail?id=58

4 komentar

  1. Aryo Sanjaya Says:
    March 5th, 2008 at 08:43

    makanya, biasakan pake framework.

    bunuh nyamuk pake senapan emang mubazir, tapi ntar dengan alat yang sama, tanpa modifikasi dan restrukturisasi, senapannya bisa dipake buat bunuh gajah.

    *ngacir sebelum ketauan gak pernah pake framework*

  2. ferdhie Says:
    March 6th, 2008 at 14:04

    @aryo:
    ya, tetapi nyamuknya ga mati2 ;))

  3. ferdhie Says:
    March 6th, 2008 at 14:09

    @aryo:
    Dan untuk menggunakan senapan itu, anda perlu belajar konfigurasi untuk mapping hibernate, mengetahui sintaks XML spring, mempelajari apa itu OGNL dan mencari2 daftar tags JSP dan kegunaannya. Kemudian mengkonfigurasi ANT agar bisa mencompile dan mem-pack aplikasi anda dalam bentuk WAR/EAR. Eh, ada lagi: Anda hrs donlot IDE nya sebesar 20mb, JVM sebesar 64mb, dan setelah terinstall, anda baru sadar kalau komputer anda terlalu lambat untuk menjalankan IDE tsb, Akhirnya minta bos anda untuk upgred memory sampai 1gb…. Nah lo…

  4. Aryo Sanjaya Says:
    March 6th, 2008 at 14:21

    @ferdhie:
    ha mosok nyamuk ditembak ndak mati? dikeplak ae tewas kok.
    catatan: nyamuknya harus diikat dulu biar gak kabur.

    tambah memori?
    kalo memang perlu, ganti laptop juga ‘bos’ tetep ok :-”

Trackback URI | Comments RSS

Tinggalkan Komentar





*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word