MyBatis

MyBatis はJavaならびに.NET Frameworkで利用可能な、XMLまたはアノテーションを用いてストアドプロシージャやSQL文をオブジェクトと紐付ける永続性フレームワークである。Apache License 2.0によるオープンソースソフトウェアとして提供されている。

以前はiBATISとして知られていた。

特徴 
MyBatisは他のO/Rマッピングフレームワークとは異なりデータベースとオブジェクトをマッピングするのではなく、SQL文とオブジェクトのマッピングを行う。このため、MyBatisはレガシーな環境や非正規化されたデータベース、またはSQL文の実行を完全に制御したい場合に、よい選択肢となる。

MyBatisによるデータベースへのアクセスコードは、JDBCによるものより遥かに簡単である。通常の場合、SQL文の実行は1行のコードで完了する。よく見られるコネクションのクローズ漏れや、検索結果に1件を期待しているにもかかわらず超過してしまうような問題を抑止できる。

MyBatisの一番の特徴は、XMLに記述したSQL文を普通のオブジェクトと組み合わせられることである。

また、MyBatisではオブジェクトとデータベースをマッピングするだけでなく、SQL文のインタフェースメソッド（マッパー）を作成することも出来る。この場合は、DIフレームワークと組み合わせることでMyBatis APIへの依存関係を排除することが出来る。このためにSpring Framework、Google Guiceとの連携がサポートされている。

MyBatisではデータキャッシュもサポートしている。XMLマッピングファイルに僅かな構文を追加するだけでキャッシュを有効にすることが可能である。MyBatisのキャッシュではOSCache, EhcacheそれにHazelcastとの連携がサポートされている。

使用方法 
SQL文はXMLファイルまたはアノテーションに記述することが出来る。以下のサンプルはXMLを使用して "Blog" を返すSELECT文の定義である。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
    <select id="selectBlog" parameterType="int" resultType="Blog">
        select * from Blog where id = #{id}
    </select>
</mapper>

このSELECT文は以下のように実行する。

Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

マッパーインタフェースは新しいMyBatisの特徴で、文字列の使用を避け、IDEのコード支援機能を活用することが出来る。

マッパーはDAO (Data Access Objects) に似ているがそれとは異なり、インタフェース上の1つ以上の、各SQL文に対応したメソッドから構成される。インタフェースの実装は、実行時にMyBatisが動的プロキシにより生成するため必要ではない。

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

歴史

関連項目
Hibernate
Java Database Connectivity (JDBC)
Java Persistence API
Spring Framework
Google Guice

外部リンク
 MyBatis公式サイト 

データベース
永続性
Java enterprise platform
.NET Framework