Daripada suntuk mending belajar ibatis. Hmmmm…
Ok, sedikit pengenalan saja ya, saya juga baru belajar
. Ibatis merupakan sebuah persistence framework untuk mengurusi masalah persistensi data dengan cara melakukan map dari pojo ke dalam xml atau sekarang bisa juga menggunakan annotation. Salah satu tujuannya adalah menyediakan fungsi fungsi JDBC dan mengurangi kode yang dihasilkan apabila ditulis secara manual.(Tanpa Framework)
Ok, Disini saya menggunakan ibatis versi 3 yang telah support annotasi. Pertama kita akan buat sebuah kelas pojo,
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.kris.model;
/**
*
* @author kris
*/
public class Mahasiswa {
private Integer id;
private String nim;
private String nama;
private String jurusan;
//setter getter
}
Setelah itu kita buat konfigurasi dari database. Kita beri nama SqlMapConfig
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.postgresql.Driver"/>
<property name="url" value="jdbc:postgresql://localhost:5432/crude-ibatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
Konfigurasi diatas beberap diantaranya berisi setting dari database yang kita gunakan, setelah itu kita buatkan dao nya :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.kris.dao;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.kris.model.Mahasiswa;
/**
*
* @author kris
*/
public interface MahasiswaDao {
@Insert("insert into mahasiswa(nim,nama,jurusan) values(#{nim},#{nama},#{jurusan})")
public void save(Mahasiswa mahasiswa);
@Select("select *from mahasiswa")
public List<Mahasiswa> getAllMahasiswa();
@Delete("delete from mahasiswa where nim=#{nim}")
public void delete(String nim);
@Update("update mahasiswa set nim=#{nim},nama=#{nama},#{jurusan} where id=#{id}")
public void update(Mahasiswa mahasiswa);
}
Disini saya menggunakan anotasi untuk melakukan query ke database, cukup sederhana bukan ? , setelah itu langkah terakhir kita buatkan main classnya :
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.kris.dao.MahasiswaDao;
import org.kris.model.Mahasiswa;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author kris
*/
public class Main {
private Reader reader;
private SqlSessionFactory sessionFactory;
private SqlSession session;
public Main() {
this.init();
this.insert();
this.getAllMahasiswa();
this.delete();
}
public void init() {
try {
reader = Resources.getResourceAsReader("SqlMapConfig.xml");
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
sessionFactory.getConfiguration().addMapper(MahasiswaDao.class);
}
public void insert() {
try {
session = sessionFactory.openSession();
MahasiswaDao mahasiswaDao = session.getMapper(MahasiswaDao.class);
Mahasiswa mahasiswa = new Mahasiswa();
mahasiswa.setNim("001");
mahasiswa.setNama("Kris");
mahasiswa.setJurusan("Sistem Informasi");
mahasiswaDao.save(mahasiswa);
session.commit();
System.out.println("Simpan data berhasil");
} catch (Exception e) {
session.rollback();
} finally {
session.close();
}
}
public void getAllMahasiswa() {
try {
session = sessionFactory.openSession();
MahasiswaDao mahasiswaDao = session.getMapper(MahasiswaDao.class);
List<Mahasiswa> mahasiswas = mahasiswaDao.getAllMahasiswa();
for (Mahasiswa mahasiswa : mahasiswas) {
System.out.println(mahasiswa.getNim());
System.out.println(mahasiswa.getNama());
System.out.println(mahasiswa.getJurusan());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
}
public void delete() {
try {
session = sessionFactory.openSession();
MahasiswaDao mahasiswaDao = session.getMapper(MahasiswaDao.class);
mahasiswaDao.delete("001");
session.commit();
System.out.println("Hapus data berhasil");
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
}
public static void main(String[] args) {
new Main();
}
}
Nah, pada fungsi ini berisi beberapa pengaturan untuk dapat menjalankan framework ini, pertama, Aplikasi akan melakukan load terhadap SqlMapConfig.xml dengan cara dimasukan kedalam reader, setelah itu reader tersebut digunakan untuk membuat SqlSessionFactory yang nanti nya digunakan untuk session. Setelah itu, karena kita menggunakan anotasi maka kita lakukan map terlebih dahulu kelas MahasiswaDao. Kemudian kelas tersebut siap digunakan dengan cara membuka session terlebih dahulu. Cukup mudah bukan ….
Download file
e.printStackTrace();
itu maksudnya gimana mas? hasilnya apa kalok di run mas?
itu aplikasi desktop gitu ya mas? apa web mas?
itu tabelnya kita buat sendiri mas? ato udah otomastis gitu?
terus dokumen xml buat apaan mas? kalok itu program jadi filenya ada berapa mas?
Posted by Zen Zubaidhar | May 20, 2010, 12:34 pm@Zen Zubaidhar
Silahkan download programnya, sudah saya tambahkan link untuk mendownload, itu hanya untuk pengenalan saja, implementasinya bisa di web bisa didesktop, dokumen xml nya berguna untuk pengaturan data sourcenya, dan juga bisa digunakan untuk kepentingan lain seperti mapping sql jika menggunakan xml.
Posted by krissadewo | May 21, 2010, 1:39 amMas kris memang hebat sekali!
Wah, sekarang sudah ada download source juga.
Makin hebat saja nih, krissadewo.wordpress.com
Hebat……
Posted by mudzakkir | September 13, 2010, 3:18 pmTerimakasih telah menshare artikel ini.
Posted by satiri | October 18, 2010, 6:17 am