iBATIS3 もbeta7 まで出た。正式版が出たら、iBATIS 2 はやめて、iBATIS 3 にしようかな。
SqlMapClient の代わりに SqlSession というクラスを使うことになるが、
アノテーションでSQLを記述する以外の古くからある手法では、
SqkMapClient で使用された
queryForObject は、selectOne
queryForList は、selectList
startTransaction や endTransaction はなく、
いきなり commit() , rollback() 実行でロジックの流れでトランザクション
管理することになる。
さらに、SqlSession のメソッドは、SQLException のcatch or throws を求めて
来ない。
Google Guice で SqlSession 生成のための provide を書くと楽になるであろう。
iBATIS3 のコンフィギュレーションファイル名= Configuration.xml
なら、以下のように、com.google.inject.AbstractModule 継承クラス
に付与すれば良い。
@Provides
protected SqlSession providedSqlSession() throws IOException{
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader(
"Configuration.xml"
));
return factory.openSession();
}
しかし、@Insert , @Update を記述したマッパーと呼ぶ interfaceのインスタンスを
Sqlsessionから、getMapper(Class) で取得してもコミットやロールバックは、
Sqlsession インスタンスで実行しなければならない。