【发布时间】:2011-09-22 08:05:53
【问题描述】:
我正在更新数据库中的多条记录。现在,每当 UI 发送要更新的记录列表时,我只需更新数据库中的这些记录。我正在为此使用 JDBC 模板。
早期案例
早先,每当我从 UI 获取记录时,我都会这样做
jdbcTemplate.batchUpdate(Query, List<object[]> params)
每当出现异常时,我都会回滚整个事务。
(已更新:batchUpdate 是多线程的还是在某些方面比批处理更新更快?)
后期案例
但后来每当出现异常时,需求就会发生变化。因此,每当出现异常时,我应该知道哪些记录未能更新。所以我不得不将记录发送回 UI,以防出现异常并说明为什么失败。
所以我不得不做类似的事情:
for(Record record : RecordList)
{
try{
jdbcTemplate.update(sql, Object[] param)
}catch(Exception ex){
record.setReason("Exception : "+ex.getMessage());
continue;
}
}
那么我是否以正确的方式通过使用循环来执行此操作?
如果是,有人可以建议我如何使其成为多线程。 或者在这种情况下有什么问题。 说实话,我很犹豫在循环中使用 try catch 块:(。
请指正,真的需要学习更好的方法,因为我自己觉得,一定有更好的方法,谢谢。
【问题讨论】:
-
与其在涉及相同行的单独线程中进行批量更新,不如尝试以不冲突的方式在线程之间拆分工作?
标签: java sql multithreading jdbc jdbctemplate