최대 1 분 소요

2023. 02. 07. 수업내용 정리

트랜잭션


트랜잭션

  • 트랜잭션(Transaction)은 두 개 이상의 DML 쿼리에 대해 단 하나라도 실행에 실패한 경우 동일한 트랜잭션 컨텍스트 내에 있는 이전의 실행 결과를 취소하기 위해 사용한다.
  • 하나의 실행 단위는 주로 실행 시간 차이가 없다시피 하고 하나의 서비스 로직이라는 (추상적인) 범위 내에서 지정한다.
  • 자바 언어를 이용한 트랜잭션 구현의 예는 아래와 같다.
    try(Connection connection = DatabaseUtil.getConnection()){
      connection.setAutoCommit(false); // 자동 커밋 해제
      try {
              // DBMS CRUD        // 할일 하기 
              connection.commit() // 모든 쿼리가 정상 작동한 후 commit 호출
          } catch (SQLException e) {
              connection.rollback(); // 모든 변경 사항 취소
              throw e;              // 보다 상위 catch 스코프로 예외 전달
          }      
    } catch (SQLException e) {
      // 공통적인 예외 처리
    }
    

    자동 커밋이 해제된 시점 부터 발생하는 모든 변경 사항은 임시 공간에 저장되기 때문에 반드시 commit() 혹은 rollback() 을 호출하여 플러쉬(Flush)해주어야한다. 그렇지 않게 된다면, 임시 공간에 영원히(서버 꺼지면 날아감) 남음으로 리소스 리키지(Leakage)가 발생하게 된다.

태그:

카테고리:

업데이트:

댓글남기기