2010-07-23 17 views
5

Conozco el estado de la API "Un cliente seguro de subprocesos para trabajar con SQL Maps", pero quiero entender cómo funciona un poco mejor y me preguntaba si alguien estaba ejecutando este entorno ina multi-threaded con transacciones Por ejemplo usando:iBatis SqlMapClient and thread safety

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 esto se usó en el que múltiples hilos pueden llamar a esto y sólo hay un objeto compartido sqlMapper ¿habría algunos temas que se están ejecutando el lote debido a que otro hilo llamado executeBatch()? Esto se convierte en un problema mayor si tengo muchos otros métodos para hacer las actualizaciones de eliminación, etc. usando el mismo sqlMapper en otros subprocesos.

No quiero iniciar una transacción en un hilo, y tengo otro compromiso de hilo antes de que se haya hecho el hilo anterior.

Entiendo que puedo sincronizar todo esto, pero preferiría no tener que hacerlo.

Respuesta

2

Cada subproceso tendrá su propia conexión de base de datos, y las transacciones funcionan de la manera que desee: también están por conexión de base de datos.