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