iBATIS3のSQLバッチ実行

iBATIS3 から、トランザクションの方法は2通りある。

SqlSession の commit() , rollback() を以下のように使うか、

   SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("Configuration.xml"));
   
   SqlSession sqlsession = factory.openSession();
   try{
   sqlsession.insert(...);
   // do Exec
   sqlsession.commit();

   }catch(Exception e){
      sqlsession.rollback();
   }finally{
      sqlsession.close();
   }

org.apache.ibatis.transaction.Transaction を使うか、

   TransactionFactory transactionFactory = new JdbcTransactionFactory();
   Transaction tx = transactionFactory.newTransaction(sqlsession.getConnection(),false);

   try{
   sqlsession.insert(...);
   // do Exec
   tx.commit();
   }catch(Exception e){
      try{ tx.rollback();}catch(Exception e){}
   }finally{
      try{ tx.close(); }catch(Exception e){
   }

iBATIS2 SqlMapClient#startBatch を使用するようにバッチ処理としてSQL実行したい場合は、
iBATIS3  white paper に書いてあったが、最新のマニュアルPDFにはそのように書かれていない。
 white paper では、 
     Transaction tx = factory.startBatch(); 
  とあったが、そんなもの無いみたいだ。
最新のマニュアルPDFを読むと、SqlSession を作成する時に、バッチ処理としてSQL実行
するかどうか指定するみたいだ。

SqlSessionFactory の SqlSession 生成メソッド

SqlSession openSession()
SqlSession openSession(boolean autoCommit)
SqlSession openSession(Connection connection)
SqlSession openSession(ExecutorType execType)
SqlSession openSession(ExecutorType execType, boolean autoCommit)
SqlSession openSession(ExecutorType execType, Connection connection)
Configuration getConfiguration();

ExecutorType に、BATCH , REUSE , SIMPLE とある。

SqlSession sqlsession = factory.openSession(ExecutorType.BATCH,false);

これで、目的のバッチSQL実行を記述できるようである。