MyBatis

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 FrameworkGoogle 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公式サイト (英語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。