iBATIS はデータベースアクセスに関する部分のプログラムを書くときに使うことができる Java のライブラリ。
なるべく新しく覚えることを少なく、というのをコンセプトに作られたなかなかいい感じのプロダクトです。
その中身は大きく分けて
この 2 つには大きな関連性はなく、sqlMaps だけを使う。DAO Framework だけを使うといった使い方もできます。
いうなれば sqlMaps と DAO Framework の関係は Jakarta でいうなら Log4J と Commons Logging の様な関係です。
今のところ、iBATIS の詳細な情報は
・iBATIS.com http://www.ibatis.com/
から手に入れることができます。
英語ですが、チュートリアルを始め、ドキュメント類は充実しています。
iBATIS を使ったプログラムはどんな感じになるのか。
まずは sqlMap の場合を例に中身の説明はありませんが、雰囲気だけ。
基本的には他のライブラリなんかと同じで、設定やなんかは xml ファイルに書いてコードからは用意された API を呼び出すというスタイルになります。
具体的に。
接続周りの設定ファイルはこんな感じ。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC" >
    <dataSource type="SIMPLE">
        <property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/>
        <property name="JDBC.ConnectionURL" value="jdbc:hsqldb:hsql://localhost"/>
        <property name="JDBC.Username" value="sa"/>
        <property name="JDBC.Password" value=""/>
    </dataSource>
</transactionManager>
<sqlMap resource="maps/Sample.xml" />
</sqlMapConfig>
次が Java のオブジェクトとデータベース上のテーブルとのマッピングの設定ファイル。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Sample">
    <select id="getSample" resultClass="javademo.ibatis.Sample">
        SELECT
           ID as id,
           DESC as description
        FROM SAMPLE
        WHERE ID = #value#
    </select>
</sqlMap>
これだけでも直感的にわかりやすい設定ファイルなのがわかるかと思います。
もちろん実際にデータベースとのやりとりを呼び出すコードの部分もシンプルです。
Sample sample = (Sample) sqlMap.queryForObject("getSample", new Long(1L));
ここまでおおざっぱな概要と雰囲気だけを書いてみました。
iBATIS は Commons DbUtils では機能的にもの足りないが、EJB や他の O/R マッピングライブラリは複雑すぎて・・・というあたりをターゲットにしている感じです。
基本的に SQL 文が扱える人であればそれほど大きな苦労なく使いこなせるのではないかと思います。
作りのコンセプトとか iBATIS 結構好きなんですが、どうにも日本ではあまり人気ないみたいです。
はて。