Java 在iBatis中使用多个startTransaction和commitTransaction并只使用最后一个endTransaction安全吗?
我写了一个程序来插入批量数据。为了加快速度,我在中间进行了事务处理。 多次调用startTransaction和commitTransaction,只调用endTransaction一次安全吗Java 在iBatis中使用多个startTransaction和commitTransaction并只使用最后一个endTransaction安全吗?,java,transactions,ibatis,Java,Transactions,Ibatis,我写了一个程序来插入批量数据。为了加快速度,我在中间进行了事务处理。 多次调用startTransaction和commitTransaction,只调用endTransaction一次安全吗 try { sqlMap.startTransaction(); // Do some work. sqlMap.commitTransaction(); sqlMap.startTransaction(); // Do some work. sqlMap.comm
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();
}
}
谢谢。在iBatis中,startTransaction、commitTransaction、endTransaction应按所述顺序调用一次。如果多次调用startTransaction和commitTransaction而不调用endTransaction,则会耗尽数据库连接并出现错误 您真的需要为每次插入都进行事务处理吗?您不会在每次插入时都使用事务来加快任何速度。看看这个。另外,对我来说,您的try-catch块看起来很奇怪,可能有误导性:如果出现问题,一个或多个事务可能不会执行,它将在第一个失败的事务上停止。我为每个事务插入了10000条记录,比插入没有事务的记录更快。这里的事务只是为了加速,而不是为了实际事务。因此,当出现问题时,不执行以下代码是可以的。