【发布时间】:2010-07-23 14:20:07
【问题描述】:
我知道 API 状态“用于处理您的 SQL 映射的线程安全客户端”,但我想了解它是如何更好地工作的,并且想知道是否有人在带有事务的多线程环境中运行这个。例如使用:
void doSomeSql() throws SQLException{
sqlMapper.startTransaction();
sqlMapper.startBatch();
final Map paramMap = new HashMap();
paramMap.put("data", "data");
Integer num = (Integer) sqlMapper.queryForObject("getRowCount", paramMap);//get row count
sqlMapper.insert("insertData", paramMap); //insert row
num = (Integer) sqlMapper.queryForObject("getRowCount", paramMap);//get row count again
sqlMapper.executeBatch();
sqlMapper.commitTransaction();
}
如果这用于多个线程可以调用它并且只有一个共享的 sqlMapper 对象,是否会有一些线程正在执行批处理,因为另一个线程调用了 executeBatch()?如果我有很多其他方法在其他线程中使用相同的 sqlMapper 进行删除更新等,这将成为一个更大的问题。
我不想在一个线程中启动事务,并在前一个线程完成之前让另一个线程提交。
我知道我可以同步所有这些,但我不想这样做。
【问题讨论】: