post-custom-banner

transaction

  • 기능 처리의 최소 단위
  • 소작업들이 모두 성공하거나 모두 실패해야 함
  • 더 이상 분리할 수 없음
  • DB는 트랜잭션을 처리하기 위해 커밋(commit)과 롤백(rollback)을 제공함
  • 커밋 : 내부 작업을 모두 성공 처리
  • 롤백 : 실행 전으로 돌아가 모두 실패 처리

자동 커밋 기능 끄기

  • JDBC에서 트랜잭션을 코드로 제어하려면 자동 커밋 기능을 꺼야 함
  • Connection의 setAutoCommit메소드로 처리 가능

    conn.setAutoCommit(false);

  • 자동 커밋 기능이 꺼지면, 커밋과 롤백을 제어할 수 있음

    커밋 : conn.commit( );
    롤백 : conn.rollback( );

트랜잭션을 위한 일반적인 코드 작성 패턴

Connection conn = null;
try{
	//트랜잭션 시작---------------------------------------------
    	//자동 커밋 기능 끄기
        conn.setAutoCommit(false);
        //소작업 처리
        ...
        //소작업 처리
        ...
        //커밋 -> 모두 성공 처리
        conn.commit();
    //트랜잭션 종료----------------------------------------------
} catch (Exception e){
	try{
    	//롤백 -> 모두 실패 처리
        conn.rollback();
    } catch (SQLException e1)
} finally {
	if(conn != null){
    	try{
        	//원래대로 자동 커밋 기능 켜기
            conn.setAutoCommit(true);
            //연결 끊기
            conn.close();
        } catch (SQLException e){}
    }
}
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글