Belajar Ibatis (menggunakan Netbeans)

3 April 2009

Kemarin saya mencoba Ibatis, framework untuk datamapping. Selama ini aplikasi Java yang saya buat langsung menggunakan JDBC saja karena memang aplikasinya kecil.

Sayangnya setelah mencoba beberapa tutorial Ibatis yang ada di internet, tidak ada yang menjelaskan secara mudah dan ringkas penggunaan Ibatis pada Netbeans. Butuh lumayan lama untuk membuat versi sederhana (ala “hello world”) dengan Ibatis. Masalah yang muncul adalah pengaturan classpath yang membuat getResourceAsReader gagal. Netbeans selalu mencari di /build/classes,  sehingga perlu ditambahkan beberapa penyesuaian.

Yang akan saya tulis di blog ini adalah tutorial yang paling minimalis yang menggunakan Ibatis. Aplikasinya menggunakan Netbeans (Windows). Tujuannya untuk referensi saya pribadi, jadi yang tidak-suka-tidak-boleh protes, walaupun silahkan saja memberikan masukan :-P Tapi syukur juga kalau posting ini dapat bermanfaat bagi orang lain.

Asumsikan MySQL dan Netbeans sudah ada di komputer. Ibatis dapat didownload di ibatis.apache.org. Buat database baru dengan nama dbtest dengan satu table Mahasiswa sebagai berikut:

create table mahasiswa ( id int auto_increment primary key, nim char(10), nama varchar(50) )

Isi dengan satu record:

insert into dbtest(nim,nama) values (‘1111′,’Budi’);

Kemudian buka Netbeans, buat new project, pilih Java Application. Beri nama “TestIbatis”. Lalu tambahkan dua library yang dibutuhkan, yaitu Ibatis dan MySQL driver. Pilih libraries (gambar bawah), klik kanan, pilih “Add Library” lalu pilih “mysql JDBC driver”. Kemudian klik kanan sekali lagi, pilih “Add JAR/Folder”, lalu masuk ke direktori Ibatis dan pilihlan ibatis-x.x.x.xxx.jar.

Isi Libraries

Isi Libraries

Sekarang buat file XML konfigurasi untuk Ibatis. Klik kanan pada package testibatis (gambar bawah) –> new –> Other –> XML document

Tambah File XML

Tambah File XML

Kemudian pilih XML document

Tambah XML

Tambah XML

Beri nama SqlMapConfig.xml dengan isi sebagai berikut. Jangan lupa sesuaikan nama database (di contoh ini  namanya dbtest), username dan password .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
  PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
  "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
  <settings useStatementNamespaces="true"/>
<transactionManager type="JDBC">
    <dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL"
        value="jdbc:mysql://localhost:3306/dbtest"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value=""/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="\testibatis\Mahasiswa.xml"/>
</sqlMapConfig>

Buat xml untuk table mahasiswa (caranya sama dengan buat xml diatas). Beri nama Mahasiswa.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Mahasiswa">
<select id="getMahasiswa" parameterClass="String" resultClass="testibatis.Mahasiswa">
SELECT
    NIM as nim,
    NAMA as nama
FROM MAHASISWA
    WHERE NIM = #value#
</select>
</sqlMap>

Buat Mahasiswa.java (caranya sama dengan menambah xml document, tapi pilih tipe java class). Isi sebagai berikut

public class Mahasiswa {
   private String nim;
   private String nama;
}

Lalu klik kanan (gambar bawah), pilih refactor –> Encapsulate Field untuk membuat method setter dan getter.

Refactor

Refactor

Pilih semua create getter dan create setter.

Kemudian buat SqlConfig.java untuk membuat map

import java.io.*;
public class SqlConfig {
private static final SqlMapClient sqlMap;
static {
   try {
      String resource = "\\testibatis\\SqlMapConfig.xml";
      Reader reader = Resources.getResourceAsReader (resource);
      sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
   } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException ("Error initializing MyAppSqlConfig class. Cause: " + e);
   }
}

public static SqlMapClient getSqlMapInstance () {
    return sqlMap;
}
}

Terakhir, di Main.java, tambahkan kode berikut:

import com.ibatis.sqlmap.client.SqlMapClient;

public class Main {
public static void main(String[] args) {
   System.out.println("Coba Ibatis");
   SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
   try {
        Mahasiswa M = (Mahasiswa) sqlMap.queryForObject("Mahasiswa.getMahasiswa", "1111");
        System.out.println(M.getNama());
   } catch (Exception e) {
      e.printStackTrace();
   }
}
}

Jalankan, dan program akan menampilkan ‘Budi”.

9 Tanggapan ke “Belajar Ibatis (menggunakan Netbeans)”


  1. Kelebihan Ibatis dibanding JDBC apa ya?

  2. yudiwbs Berkata

    Saya juga baru mencoba sedikit. Menurut saya kelebihannya:

    - Memaksa agar SQL terpisah dengan program. Program yang SQL-nya tersebar dimana-mana cenderung sulit dibaca dan sql-nya sulit direuse.

    - Pemetaan ke objek lebih mudah. Data di DB di load ke objek, manipulasi objek lalu simpan lagi ke DB. Tanpa ibatis ini harus dilakukan manual.

  3. mbahsomo Berkata

    Nanya nih bos kalo saya pingin buat koneksinya dinamis jadi dari file ini misalnya bisa ngak setting SqlMapConfig.xml
    bukan
    tapi dari file ini yang ada di /home/mbahsomo/program/setting/ini
    misal :D
    atau mungkin dari sebuah class

  4. yudiwbs Berkata

    Coba lihat code SqlConfig.java, disana tinggal disesuaikan saja lokasi dan nama file xml-nya.

  5. yadi rosadi Berkata

    Menarik pa, saya juga ingin coba…
    yang saya dengar ibatis itu seperti hibernate, tetapi ada fitur – fitur hibernate yang tidak ada di ibatis karena itu libary ibatis sangatlah kecil dan cocok sekali bila aplikasi yang kita buat tidak terlalu rumit relasi tabel di database.

    Tapi yang saya tanyakan jika kita menggunakan Ibatis kira-kira penggunaan stroe procedure masih kental ga?

    • yudiwbs Berkata

      IMO, justru kalau relasinya rumit setahu saya pakai hibernate-pun kembali ke SQL. Jadi kalau banyak query yg rumit, sepertinya ibatis lebih bagus. cmmiw.

      Tentang SP, saya belum pernah coba.

  6. EiChaty Berkata

    Tlong donk, saya khan dah coba belajar ibatis, dah cukup ada penjelasan diatas. Gmn dengan hibernate? Minta penjelasannya donk.. Kalau bisa sekalian manipulasi datanya ;) )

    • yudiwbs Berkata

      Sorry belum belajar, nggak selera begitu melihat HSQL hehe. Tapi rencananya saya mau mengadakan pelatihan Ibatis+Hibernate, jadi mungkin materi tentang Hibernate juga akan saya buat.

  7. HackerMpia Berkata

    Pak bisa tolong di bahas konsep penerapannya dalam aplikasi penjualan gak pak kalau bisa pakek Netebeans soalnya saya lagi tertarik dengan java netbeans from VB nih hehehe mau pindah java


Tinggalkan Balasan