Je connais l'état de l'API "Un client sûr pour travailler avec vos cartes SQL", mais je veux comprendre comment cela fonctionne un peu mieux et je me demandais si quelqu'un l'utilisait dans un environnement multithread avec des transactions. Par exemple en utilisant:iBatis SqlMapClient et la sécurité des threads
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();
}
Si cela a été utilisé sur l'endroit où plusieurs threads peuvent appeler cela et il n'y a qu'un seul objet sqlMapper partagé aurait-il des fils qui exécutent le lot car un autre thread appelé executeBatch()? Cela devient plus d'un problème si j'ai beaucoup d'autres méthodes faisant des mises à jour de suppression etc. en utilisant le même sqlMapper dans d'autres threads.
Je ne veux pas démarrer une transaction dans un thread, et avoir un autre commit avant que le thread précédent a été fait. Je comprends que je peux synchroniser sur tout cela, mais je préférerais ne pas le faire.