MyBatisは、
Javaおよび
.NET Framework環境で利用できる
永続性フレームワークです。このフレームワークの大きな特徴は、XMLファイルや
アノテーションを用いて、
SQL文と
Javaのオブジェクトを柔軟に紐付けることができる点です。以前はiBATISという名称で知られていましたが、現在はMyBatisとして広く利用されています。
特徴
MyBatisは、他のO/Rマッピングフレームワークとは異なり、
データベースのテーブルとオブジェクトを直接マッピングするのではなく、
SQL文そのものとオブジェクトをマッピングします。このため、以下のような状況で特に有効です。
既存の
レガシーなシステム環境
正規化されていない
データベース
SQL文の実行を詳細に制御したい場合
MyBatisを使用すると、
データベースアクセスコードがJDBCを利用する場合よりも遥かに簡潔になります。例えば、
SQL文の実行は通常1行のコードで完了します。これにより、コネクションのクローズ漏れや、検索結果が複数件返ってきてしまうといった、よく発生する問題を抑制できます。
MyBatisの最も重要な特徴の一つは、XMLに記述された
SQL文を
Javaのオブジェクトと組み合わせて使用できることです。これにより、
SQLの柔軟性と
Javaのオブジェクト指向プログラミングの利点を両立させることができます。
さらに、MyBatisでは、オブジェクトと
データベースのマッピングだけでなく、
SQL文のインタフェースメソッド(マッパー)を作成することも可能です。このマッパーは、DIフレームワーク(
Spring Frameworkや
Google Guiceなど)と連携させることで、MyBatis APIへの依存を排除し、より柔軟なアプリケーション設計を可能にします。
MyBatisはデータキャッシュ機能もサポートしています。XMLマッピングファイルに簡単な設定を追加するだけで、キャッシュを有効にできます。キャッシュの連携先としては、OSCache、Ehcache、Hazelcastなどがサポートされています。
使用方法
SQL文は、XMLファイルまたは
アノテーションのいずれかに記述できます。以下は、XMLファイルを使用した
SQL文の例です。この例では、"Blog"を返すSELECT文を定義しています。
xml
このSELECT文は、以下のような
Javaコードで実行できます。
java
Blog blog = sqlSession.selectOne("selectBlog", 101);
マッパーインタフェース
マッパーインタフェースはMyBatisの重要な機能の一つで、
SQL文を文字列としてではなく、メソッドとして扱うことができます。これにより、IDEのコード補完機能などのサポートを最大限に活用でき、タイプミスなどのエラーを減らすことができます。マッパーは、DAO(
Data Access Objects)に似ていますが、DAOとは異なり、インタフェース上の複数のメソッドが、それぞれ
SQL文に対応しています。マッパーインタフェースの実装は、MyBatisが動的プロキシを使用して実行時に生成するため、開発者が実装する必要はありません。
歴史
MyBatisは、以前はiBATISという名前で知られていました。その後、Apache Software Foundationのプロジェクトとして開発が進められ、現在のMyBatisという名称になりました。
関連項目
Hibernate
Java Database Connectivity (JDBC)
Java Persistence API
Spring Framework
Google Guice
外部リンク
MyBatis公式サイト (英語)