"SQL Maps 작업을위한 스레드 안전 클라이언트"라는 API 상태를 알고 있지만 어떻게 작동하는지 이해하고 싶습니다.이 스레드가 멀티 스레드 환경에서 실행되고 있는지 궁금합니다. 거래. 사용 예를 들어 :iBatis SqlMapClient 및 스레드 안전성
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를 사용하여 삭제 등의 업데이트를 수행하는 방법이 많이있는 경우 문제가됩니다.
한 스레드에서 트랜잭션을 시작하고 이전 스레드가 완료되기 전에 다른 스레드가 커밋되기를 원합니다.
나는이 모든 것을 동기화 할 수는 있지만 오히려하지 않아도된다고 알고 있습니다.