ibatis는 알다시피 퍼시스던트계층을 담당하고있으므로
트랜젝션 처리를 자동과 수동으로 설정할수 있다.
--getSqlMapClientTemplate()
이녀석은 자동으로 트랜젝션을 처리해준다.
예를 들어
for(int i=0; i<paramList.size(); i++){
getSqlMapClientTemplate().update("test.updateTest",paramList);
}
이런식으로 처리한다면 update한번마다 자동으로 트랜젝션 처리가 되도록 되어있다.
물론 간편하고 쓰기도 좋지만 위와같이 여러건을 execute해야하는 경우
여러건을 전부 실행하고 이상이 없으면 commit해야 하는 경우가 대부분이다.
--getSqlMapClient()
그럴때 사용되는 녀석이 바로 요놈이다.
예를 들면
getSqlMapClient sql = getSqlMapClient();
sql.startTransaction();
sql.startBatch();
for(int i=0; i<paramList.size(); i++){
sql.update("test.updateTest",paramList);
}
sql.executeBatch();
sql.commitTransaction();
위와같은 방법을 로컬트랜젝션(일괄처리)기법이다.
이처럼 처리하면 일괄 처리 할수 있음으로 여러건일경우 좋다.
속도또한 자동처리보다 빨라 번거럽게 보이지만 훨씬 효율적일 수 있다.
원본 : http://cafe.naver.com/bugreports.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=14
위사이트에서 얻은 정보임을 밝힌다. [출처] [IBATIS] 트랜젝션 처리|작성자 소요
댓글