Apa yang dimaksud dengan iBatis?

iBatis merupakan sebuah persistence framework yang dapat digunakan untuk memetakan query SQL ke Plain Old Java Objects (POJOs). Class POJO berisi sejumlah variabel beserta method setter() dan getter(). Query SQL bersifat decoupled terhadap aplikasi yang dikembangkan, sebab ditempatkan pada file-file XML. Jadi, kita bebas mengganti query yang akan digunakan. Oleh karena iBatis menggunakan query SQL, bukannya menggunakan query language yang baru, maka iBatis lebih portable terhadap database yang berbeda jika dibandingkan dengan Hibernate yang menggunakan Hibernate Query Language (HQL). Selain itu, penggunaan SQL di iBatis juga meyakinkan kita bahwa hasil query yang akan diperoleh merupakan hasil yang dinginkan. Jika menggunakan Hibernate Query Language (HQL), query yang kita tulis akan dikonversi lagi oleh converter engine, yang telah disediakan Hibernate, menjadi query SQL. Nah, query SQL hasil proses konversi ini yang menimbulkan keraguan walaupun mungkin Hibernate sudah men-generate query SQL dengan metode atau algoritma yang dapat diandalkan. Tetapi, tetap saja kita tidak benar-benar yakin akan hasil query yang dikembalikan.

Infrastruktur dan konfigurasi iBatis seperti apa?
iBatis mempunyai 2 macam file konfigurasi, yaitu : y File XML yang berisi deklarasi dari domain object seperti pemetaan nama kolom-kolom di tabel dengan pasangannya masing-masing di domain object atau class POJO. Selain itu, query-query SQL yang sekiranya akan digunakan dalam aplikasi dapat ditempatkan juga pada file ini atau dapat juga ditambahkan dalam proses development nantinya.

Contoh :
<?xml version=´1.0 encoding=´UTF-8 standalone=´no´?> <!DOCTYPE sqlMap PUBLIC ³-//iBATIS.com//DTD SQL Map 2.0//EN´ ³http://www.ibatis.com/dtd/sql-map-2.dtd´> <sqlMap> <typeAlias type=´com.goglo.ibatis.Item´ alias=´item´/> <resultMap class=´item´ id=´result´> <result property=´NItemId´ column=´n_item_id´/> <result property=´VNmItem´ column=´v_nm_item´/> <result property=´DCreate´ column=´d_create´/> </resultMap> <select id=´getAllItems´ resultMap=´result´> select * from Item </select> </sqlMap>

1 Arsitektur NHibernate Sumber : http://www.lp.php? .0//EN´ ³http://www.ibatis.Config dan XML Mapping) untuk menyediakan layanan persistent dan objek persistent ke aplikasi.com/2008/07/31/ibatis-part-1-2/ NHibernate Salah satu ORM yang dikhususkan untuk . Dalam arsitektur tersebut terlihat bahwa NHibernate menggunakan database dan data konfigurasi (App.its. ditunjukkan arsitektur high-level-view dari NHibernate.0 encoding=´UTF-8 ?> <!DOCTYPE sqlMapConfig PUBLIC ³-//iBATIS.dtd´> <sqlMapConfig> <sqlMap resource=´Coba.1. Contoh : <?xml version=´1. Gambar 1. tetapi juga menyediakan data query dan mendapatkan fasilitas-fasilitas yang dapat mengurangi waktu pengembangan perangkat lunak secara signifikan.NET adalah NHibernate.com/dtd/sql-map-config-2.xml´ /> </sqlMapConfig> Sumber : http://goglo.y File sentral yang berisi informasi lokasi dari masing-masing file konfigurasi yang pertama disebutkan di atas.if.wordpress. NHibernate tidak hanya memfokuskan kepada pemetaan dari kelas .NET ke tipe data SQL). Pada gambar 1.NET ke tabel database (dan dari tipe data .ac.com//DTD SQL Map Config 2.id/portal/browse. Tujuan dari NHibernate adalah adalah meringankan beban developer terhadap persoalan-persoalan programming yang berkaitan dengan data.

ParentID from Categories </select> </statements> Pada contoh diatas. untuk mendapatkan list dari Category maka DAO object perlu mengetahui nama statement yaitu : GetContentCategoryList. Contoh code untuk mendapatkan list dari category pada class DAO nya adalah : public class CategorySqlMapDao : BaseSqlMapDao. <statements> <select id="GetContentCategoryList" resultMap="ContentCategoryResult"> select CategoryID. Sebagai contoh mari kita lihat sepotong statement untuk mendapat list dari data tertentu. Name. bisa dibilang pada iBatis DAO sangat tightly coupled terhadap nama statement. maka DAO harus mengetahui nama statement untuk melakukan operasi yang diinginkan.nHibernate vs iBatis Kemudahan iBatis untuk mendefinisikan secara bebas sqlMap pada saat dibutuhkan menimbulkan permasalahan pada level DAO ini. } } . Disini terlihat begitu terikatnya DAO iBatis dengan statement query. Karena iBatis sangat bergantung pada statements untuk melakukan operasi-operasi terhadap data. null). ICategoryDao { public IList GetCategoryList() { return ExecuteQueryForList(³GetContentCategoryList³.

null). Karena nHibernate secara implisit setelah kita mendefinisikan mapping file akan menggenerasi sql query sesuai dengan definisi pada mapping file tersebut.Permasalahannya adalah statement GetContentCategoryList dibuat pada sqlMap yang berada pada level Client (aplikasi yang akan menggunakan DAO ini).aspx . update . } } nHibernate Lalu bagaimana dengan nHibernate. membuat DAO class lebih mudah untuk membuat method untuk melakukan operasi terhadap data. Method-method standar seperti insert (Save). keuntungan nHibernate dibalik tightly copuled mapping antara class dengan mapping file.net/blogs/basir/pages/9902.netindonesia. Sekali lagi tanpa harus mengetauhi sql query nya dan pastinya nama statement nya Sumber : http://geeks. Tetapi fungsi pada DAO tidak perlu mengetahui querynya seperti apa. karena nHibernate telah mengenkapsulasi masing-masing query untuk database berbeda pada class Dialect nya. Sehingga sebelum statement tersebut secara real dibuat maka DAO object kita harus mengetahui terlebih dahulu nama dari statement yang akan digunakan. yang pada iBatis definisi query harus dibuat satu persatu dan masing-masing memiliki nama statement berbeda. dan get one object dapat dengan mudah didefinisikan pada level DAO. ICategoryDao { public IList GetCategoryList(string strStatementName) { return ExecuteQueryForList(strStatementName. get list. Berikut adalah contoh bagaimana nama statement dikirim sebagai parameter. Resolusi dari permasalah ini salah satunya adalah membuat nama statement sebagai salah satu parameter yang dikirim sehingga DAO tidak perlu mengetahui nama statement sebelumnya. Atau menggunakan attribute yang berisi nama-nama statement yang akan digunakan oleh DAO tersebut. sehingga nama parameter hanya perlu diketahui pada level client : public class CategorySqlMapDao : BaseSqlMapDao.

Sign up to vote on this title
UsefulNot useful