当然要啦。
判断batch的执行过程,如果出错,手动rollback因为executeBatch()可能是根据不同的驱动而发生不同的操作,在出错时可能会自动rollback,也可能会跳过出错的那条sql语句,继续执行。所以要自己手动地处理事务稳妥。

解决方案 »

  1.   

    一条SQL语句本身就是一个原子操作,如果executeBatch对应一个SQL的话,是不是就不用考虑太多了。我不知道executeBatch底层是如何实现的,大虾们能不能给解释一下,谢谢了。
      

  2.   

    需要事务管理
    一个批处理的执行作为一个事务对待。执行过程中如果失败,会滚至批处理前
    一般做法是先关掉autocommit模式,然后执行。再恢复原来autocommit模式boolean autoCommit = con.getAutoCommit();
    con.setAutoCommit( false );
    ........
    addBatch
    executeBatch();
    ........
    con.setAutoCommit( autoCommit );
      

  3.   

    sql文是一条,用excuteBatch的好处就是可以减少sql文解析的时间,如果内部还用多条的话,那等于什么时间都没节约到.