iBATIS3 の Transaction

iBATIS3 beta10 を試して判ったこと。
トランザクションを使う場合にBatchSQL では、更新はできない。
org.apache.ibatis.transaction.Transaction インターフェースを見てわかるとおり
  getConnection()
  commit()
  rollback()
  close()
メソッドあるだけで、大量のSQLによるバッチ実行のメソッドはなく、
Transaction インスタンスを生成する org.apache.ibatis.session.SqlSession
は、ExecutorType.BATCH であってはならない。


つまり、

SqlSessionFactory sqlsessionFactory = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("Configuration.xml"));

// openSession の実行で ExecutorType.BATCH を指定しない。
SqlSession sqlsession = this.sqlsessionFactory.openSession(false);
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Transaction tx = transactionFactory.newTransaction(sqlsession.getConnection(),false);


このように、Transaction を生成する必要がある。
もう1つ注意は、
Transaction.close() をすると SqlSession もクローズすることになる。