본문 바로가기

Spring

[Spring MVC] 트랜잭션(Transaction), ACID 원칙, 커밋(commit), 롤백(rollback)

** 개인 학습용으로 작성한 내용이니 정확하지 않을 수 있음 ** 

 

트랜잭션(Transaction)이란?

여러개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위이다. 

 

예시:

1) 카페 고객이 주문 > 결제 완료 > 쿠폰 등록 완료까지 했는데 주문서가 데이터베이스 오류로 정상적으로 작동을 안 한다면 손님에게 금전적인 손해

2) 카페 고객 주문 > 결제 오류 > 쿠폰 등록 완료 된다면 카페가 손님한테 무료 쿠폰 주는 것으로 카페에게 손해

3) 카페 고객 주문 > 쿠폰 등록 > 커피 완료 까지 마쳤으나 데이터베이스 오류로 스탬프가 정상적으로 등록 안된 경우 고객에게 손해

 

예시 상황: 하나의 그룹으로 묶여 있는 작업이 완성이되지 않았다. 이러한 작업은 트랜잭션이라 부르지 못한다.

 따라서 트랜잭션은 하나의 작업이 전체 성공 또는 전체 실패 (All or Nothing) 이여야만 트랜잭션의 의미를 가진다.

 

트랜잭션의 특징 ACID 원칙:

1) Atomicity(원자성) : 작업을 더 이상 쪼갤 수 없는 상황 (ex 커피 주문 & 스탬프 횟수 증가)

2) Consistency(일관성) : 트랜잭션이 에러 없이 성공적으로 종료 되어 정자성적으로 저장 또는 변경 (ex 주문한 커피 수량대로 쿠폰 횟수 증가)

3) Isolation(격리성) : 여러개의 트랜잭션들이 실행 될 경우 각각 독립적으로 실행이 되어야 함 (ex 컴퓨터에서 word 와 계산기처럼 각각 다른 작업을 실행하고 있을때 각각의 트랜잭션대 실행 되고 있음)

4) Durability(지속성) : 트랜잭션이 완료되도 그 결과가 지속 되어야 한다는 의미 (ex 커피 주문 완료되어도 데이터베이스에는 그 회원의 주문 상태를 완료로 계속 저장해야 함) 

 

트랜잭션의 커밋(Commit) & 롤백(Rollback):

커밋 : 모든 작업을 최종적으로 데이터베이스에 반영하는 명령어.  commit 후 변경 내용이 데이터베이스에 영구적으로 저장 되고 해당 트랜잭션 과정이 종료 된다. 

롤백 : 작업 중 오류가 발생할 경우 트랜잭션에서 수행된 모든 작업들을 취소하게 된다. 그럼으로 트랜잭션 시작 이전의 상태로 돌아가게 된다. 

'Spring' 카테고리의 다른 글

[Spring Security] Spring Security  (0) 2023.05.11