ActiveJDBC批量插入和事务

ActiveJDBC batch insert and transaction

插入一批记录的推荐方法是什么,或者 none 如果数据库对任何插入操作都出现错误? 这是我当前的代码:

PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
for (MyModel m : myModels)
    Base.addBatch(ps, m.getCol1());
Base.executeBatch(ps);
ps.close();

这会插入记录,直到第一个失败的记录(如果发生)。
我想要全部插入或不插入任何内容,然后我在考虑包装 executeBatch():

Base.openTransaction();
Base.executeBatch(ps);
Base.commitTransaction();

如果正确,我应该在try catch中做Base.rollbackTransaction()吗?
我还应该关闭 finally 块中的 ps.close() 吗?

谢谢!

事务处理的批处理操作与非批处理操作没有任何区别。请参阅:http://javalite.io/transactions#transacted-activejdbc-example 了解典型模式。

届时您将执行此操作:

List<Person> myModels = new ArrayList<>();
    try{
        Base.openTransaction();
        PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
        for (Person m : myModels){
            Base.addBatch(ps, m.getCol1());
        }
        Base.executeBatch(ps);
        ps.close();
        Base.commitTransaction();
    }catch(Exception e){
        Base.rollbackTransaction();
    }

这样,万一出现异常,您的数据将完好无损