[JPA] 트랜잭션(Transaction) & ACID 원칙

hwarye·2022년 12월 30일
0

JPA

목록 보기
1/5

트랜잭션

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

ex) 커피 주문 시, 결제, 스탬프 적립, 주문 정보 데이터베이스 등록 필요 
 -> 여기서 결제 작업과 스탬프 적립 작업, 주문 정보 데이터베이스에 등록 작업을 하나의 그룹으로 묶어서 처리하는 것.

-> 이 중에서 어느 하나라도 처리에 실패할 경우, 애플리케이션의 신뢰성이 깨지는 상황 발생.
-> 애플리케이션의 신뢰성이 깨지는 상황이 발생하면 트랜잭션이라고 부를 수 없다.

🫧 ALL or NOTHING 🫧

트랜잭션의 처리 방식

트랜잭션을 처리할 땐 all or nothing으로, 전부 성공하든가 전부 실패해야 트랜잭션의 의미를 가진다.
=> 데이터의 무결성을 보장하는 핵심 역할.


ACID 원칙

트랜잭션의 특징

1) 'A'tomicity (원자성)

= 더 이상 쪼갤 수 없음.

-> 작업을 더 이상 쪼갤 수 없기 때문에 하나로 인식하여 All of Nothing이 가능
-> 즉, All or Nothing으로 모두 성공하든, 실패하든 둘 중 하나로 처리되는 것이 보장되어야 함.

2) 'C'onsistency (일관성)

= 트랜잭션이 에러 없이 성공적으로 종료될 시, 비지니스 로직에서 의도하는 대로 일관성 있게 저장되거나 변경되는 것.

ex) 3잔 커피 주문으로 스탬프 횟수 3 증가해야 함. -> 그러나, 3 이외의 숫자로 스탬프 값 증가
=> 일관성 위배.

3) 'I'solation (격리성)

= 여러 개의 트랜잭션이 실행될 경우 각각 독립적으로 실행되어야 함.

-> CPU가 여러가지 프로세스를 실행하는 것처럼 데이터베이스도 성능 향상을 목적으로 한 개 이상의 트랜잭션을 번갈아가며 처리할 수 있음 -> 이럴 경우, 각 트랜잭션이 다른 트랜잭션에 영향을 주지 않고 독립적으로 실행되어야 한다는 것이 격리성이다.

4) 'D'urability (지속성)

= 트랜잭션이 완료되면 그 결과는 지속되어야 한다.

-> 데이터베이스가 종료되더라도 데이터는 물리적인 저장소에 저장되어 지속적으로 유지되어야 한다는 의미.

profile
례코드

0개의 댓글