在iBatis中使用多个startTransaction和commitTransaction以及最后一个endTransaction是否安全?

时间:2014-05-27 02:13:11

标签: java transactions ibatis

我写了一个插入批量数据的程序。为了加快速度,我在流程中提交了事务。 是否可以安全地多次调用startTransaction和commitTransaction并只调用一次endTransaction?

try {
  sqlMap.startTransaction();
  // Do some work.      
  sqlMap.commitTransaction();

  sqlMap.startTransaction();
  // Do some work. 
  sqlMap.commitTransaction();

  sqlMap.startTransaction();
  // Do some work. 
  sqlMap.commitTransaction();
} catch (SQLException e) {
  e.printStackTrace();
  throw new MyException();
} finally {
  try {
    sqlMap.endTransaction();
  }
  catch (SQLException e) {
    e.printStackTrace();
    throw new MyException();
  }
}

感谢。

1 个答案:

答案 0 :(得分:0)

在iBatis中,startTransaction,commitTransaction,endTransaction应按照规定的顺序调用一次。如果多次调用startTransaction和commitTransaction而不调用endTransaction,则将耗尽db连接并获取错误。