iBATISは、
SQL クエリ を
Java のPOJO(Plain Old
Java Object)にマッピングする
永続性 フレームワークです。このフレームワークの最大の特徴は、
SQL クエリ をXMLファイルに記述することで、アプリケーションのコードから
SQL を分離できる点にあります。これにより、データベースへのアクセスに必要な大量の
Java コードを大幅に削減することが可能になります。
具体例として、`PRODUCT`というテーブル(`PRD_ID`: INTEGER, `PRD_DESCRIPTION`: VARCHAR)と、
Java のオブジェクト`com.example.Product`(`id`: int, `description`: String)が存在する場合を考えてみましょう。`Product`オブジェクトに特定の`PRD_ID`に対応する`PRODUCT`テーブルのデータを格納するためには、以下の設定をXML
SQL マップに記述します。
xml
SELECT PRD_ID as id, PRD_DESCRIPTION as description
FROM PRODUCT
WHERE PRD_ID = #value#
上記の例では、`#value#`は
クエリ に渡される`Long`型の値を指します。もしパラメータが
Java オブジェクトである場合は、そのオブジェクトのプロパティから値を取得し、同様の`#`記法で
クエリ に埋め込むことができます。例えば、パラメータクラスが`com.example.Product`で、`id`というプロパティを持つ場合、`#value#`を`#id#`に置き換えることができます。
以下は、パラメータを設定して結果をオブジェクトに格納する
Java コードの例です。
java
Long productId = 123L;
Product product = (Product) sqlMapClient.queryForObject("getProduct", productId);
このコードでは、`sqlMapClient`は`com.ibatis.sqlmap.client.SqlMapClient`のインスタンスです。このようにiBATISを用いることで、
SQL と
Java コードを分離し、可読性が高く、保守しやすいコードを記述することが可能となります。
しかしながら、iBATISの開発者たちは
Java 5のリリースに失望を表明しており、2006年12月のバージョン2.3.0のリリース後、2008年4月に2.3.1と2.3.2がリリースされるまで、長い時間を要しました。この遅延は、
Java 5への失望と無関係ではないと考えられます。
さらに、2010年6月16日には、公式サイトを通じて
Apacheソフトウェア財団 での活動を中止し、プロジェクトをフォークし、開発者が移籍することが発表されました。このフォークによって誕生した新たなプロジェクトが
MyBatis です。
関連する技術として、同様の
永続性 フレームワークである
Hibernate や、
Java アプリケーション開発に広く用いられる
Spring Framework などがあります。
関連情報
iBATIS @ Apache Foundation
MyBatis