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
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
Sekarang buat file XML konfigurasi untuk Ibatis. Klik kanan pada package testibatis (gambar bawah) –> new –> Other –> XML document

Tambah File XML
Kemudian pilih XML document

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
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”.





8 April 2009 pada 6:01 am
Kelebihan Ibatis dibanding JDBC apa ya?
8 April 2009 pada 7:14 pm
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.
11 April 2009 pada 8:47 am
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
atau mungkin dari sebuah class
11 April 2009 pada 12:50 pm
Coba lihat code SqlConfig.java, disana tinggal disesuaikan saja lokasi dan nama file xml-nya.
24 April 2009 pada 1:08 am
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?
24 April 2009 pada 5:24 pm
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.
13 Juni 2009 pada 11:23 am
Tlong donk, saya khan dah coba belajar ibatis, dah cukup ada penjelasan diatas. Gmn dengan hibernate? Minta penjelasannya donk.. Kalau bisa sekalian manipulasi datanya
)
17 Juni 2009 pada 8:04 am
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.
26 Agustus 2009 pada 6:01 am
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