Class06(트랜잭션)
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)가 발생하게 된다.
댓글남기기