iBATIS
開発元 | Apacheソフトウェア財団 |
---|---|
初版 | 2001年 |
最新版 | 3.0 (Java), 1.6.2/1.9.2 (.Net) |
プラットフォーム | クロスプラットフォーム |
対応言語 | Java, .NET, Ruby |
サポート状況 | 活動停止(MyBatisに移行) |
種別 | 永続性フレームワーク |
ライセンス | Apache License 2.0 |
公式サイト | http://ibatis.apache.org |
iBATIS は、SQLクエリを POJO (Plain Old Java Object) にマッピングする永続性フレームワークである。SQLクエリはXMLファイルに置くことで一旦アプリケーションと分離される。検索結果のオブジェクトのマッピングは自動的か半自動的に行う。
iBATIS の基本となる考え方は、SQLクエリをXMLファイルに置くことで、関係データベースにアクセスする際に必要となる大量のJavaコードを大幅に減らすことである。
例えば、データベースに PRODUCT (PRD_ID: INTEGER, PRD_DESCRIPTION: VARCHAR) という表があるとし、Javaのオブジェクト com.example.Product (id: int, description: String) があるとする。Product POJO の中に特定の PRD_ID の PRODUCT の内容を格納するには、以下を XML SQL マップに挿入する。
<select id="getProduct" parameterClass="java.lang.Long" resultClass="com.example.Product"> select PRD_ID as id, PRD_DESCRIPTION as description from PRODUCT where PRD_ID = #value# </select>
パラメータオブジェクトを設定して結果オブジェクトに格納するJavaコードは次のようになる。
Product resultProduct = sqlMapClient.queryForObject("getProduct", 123);
#value# はクエリで渡される Long を指す。パラメータがJavaオブジェクトなら、そのオブジェクトのプロパティから得られる値を似たような # 記法を使ってクエリに挿入できる。例えばパラメータクラスが com.example.Product で、それに id というプロパティがある場合、#value# は #id# に置換できる。sqlMapClient は com.ibatis.sqlmap.client.SqlMapClient のインスタンスである。
iBATIS の創始者はJava 5 への失望を表明しており、2006年12月に 2.3.0 をリリースしてから 2.3.1 と 2.3.2 を2008年4月にリリースするまで長い時間を要したのは無関係ではない。
2010年6月16日、公式サイトにてApacheソフトウェア財団での活動中止と、プロジェクトのフォーク、ならびに開発者の移籍がアナウンスされた。新プロジェクトはMyBatisと呼ばれている。