/*
<트랙잭션>
◎ 트랜잭션(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)
가 발생하게 된다.
*/