2016-04-20

JDBC と MyBatis でバルク・インサート(multi-row vs batch)

MyBatis でバルク・インサート(複数行一括挿入)を実装するのに multi-row insert を使った例を割と良く見かけます。
ですが、特に挿入対象の行数が多い場合は batch insert の方が良い選択肢となります。

この記事では2つの方法を比較して、なぜ batch insert を使うべきなのか説明します。
テストに使ったプロジェクトは GitHub に置いてあります。

2013-08-29

Bose QuietComfort 20i (QC20i) の感想

Bose の QC20i を買ったので、ランダムな感想を。
オーディオマニアではないしノイズキャンセリング機能も初めてなので、どちらかと言うとこれまで使っていた Bose の MIE for IP, MIE2i との比較です。

2013-07-06

Bintray 上に Eclipse プラグインの更新サイト(p2 リポジトリ)を構築する。

Bintray のユーザーガイドによると、公開後5日を過ぎたファイル、30日を過ぎたバージョンは削除できないことになっています。
Eclipse プラグインの更新サイトでは新しいバージョンをリリースする際、いくつか既存のファイルを上書きして更新する必要があるので、この仕様だと更新サイトとしては使えないのかな、と考えていたのですが、サポートに問い合わせた結果、いくつかの約束事を守れば Bintray でもEclipse プラグインの更新サイトを公開できることが分かりました。


2013-04-19

MyBatis と iBATIS の関係とか

ときどき疑問に思っている人がいるようなので。
大部分は下記ページの抜粋ですけど。
http://mybatis.org/about.html

2012-05-02

MyBatis Generator - 自動生成された要素を利用してカスタマイズする

MyBatis Generator とは、データベースのスキーマを元に MyBatis が使用する各種ファイルを自動生成するためのツールです。
MyBatis を使う場合は基本的に SQL を手書きする必要がありますが、大量の XML を手で書くのはミスの原因にもなりますし健康にも良くありません。また、スキーマ変更の多いプロジェクトでは更新の手間も馬鹿になりません。
それを解決するのが MyBatis Generator です。

MyBatis Generator は非常に柔軟で多機能なツールですが、この投稿ではマージ機能と生成されたファイルの拡張方法について説明します。
マージ機能とは、Generator がファイルを生成する際、既存のファイルを上書きするのではなく内容をマージしてくれる機能のことで、これのおかげでカスタマイズ内容を維持したまま繰り返し自動生成処理を実行することができるようになっています。

2012-04-17

MyBatis 3.1.1 選択的ロギングの改善

前の投稿 で、新しいロギングの設定では従来のようにステートメント(java.sql.PreparedStatement, java.sql.Statement)と結果(java.sql.ResultSet)のログレベルを別々に指定することができない、と書きましたが、昨日リリースされた 3.1.1 で改善されました。

DEBUG レベルではステートメントのみが出力され、新たに追加された TRACE レベルを指定することで結果を出力することができるようになっています。

2012-03-08

MyBatis 3.1.0 ログ出力設定の変更:選択的ロギング

MyBatis 3.1.0 ではログレベルをより細かい単位(パッケージ、Mapper、ネームスペース、ステートメント)で設定できるようになり、これに伴ってログ出力の設定方法が変更されています。

バージョン 3.0.x 以前で実行されるクエリの内容や結果を出力する場合、 log4j では下記のように設定していました。


log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

3.1.0 で同様の設定を行う場合は、Mapper を含むパッケージに対してログレベルを設定します(上記の設定は不要となります)。例えば Mapper が org.mybatis.example というパッケージ以下に格納されている場合は下記のようになります。


log4j.logger.org.mybatis.example=DEBUG

さらに細かく、例えばあるステートメントのログだけ出力したい場合は下記のように設定します。


log4j.logger.org.mybatis.example.BlogMapper.selectBlog=DEBUG

必要なクエリだけ出力できるので、本番環境でのログ出力など、より柔軟に対応できるようになります。

ただ、従来のようにステートメント(java.sql.PreparedStatement, java.sql.Statement)と結果(java.sql.ResultSet)のログレベルを別々に指定するといった設定は今のところできません。 バージョン 3.1.1 で改善されました。

MyBatis オンラインマニュアル:ロギング