[Spring Boot]7.트랜잭션 적용하기

트랜잭션이란 데이터 베이스의 상태를 변화시킬때 더이상 분리 할 수없는 작업의 단위.

예를 들어 금융 거래시 아래와 같은 과정을 거칠때

1.이체할 계좌선택

2.이체하는 계좌에서 돈 출금

3.이체 받는계좌에 돈 입금

4.거래 정상완료

이중에 2,3번에서 에러가 발생하면 1~4까지 하나의 트랜잭션에서 일련의 작업이 처리해야한다.

트랜잭션을 설명할때는 ACID속성을 빠질수가 없다

※ACID속성

  • 원자성(Atomicity) : 트랜잭션은 하나 이상의 관련된 동작을 하나의 작업단위로 처리.트랜잭션이 처리하는 작업 단위는 결과가 성공or실패할 경우에 관련된 동작은 모두 동일한 결과가 나와야 한다. 작업중 하나라도 실패한다면 관련된 트랜잭션 내에서 먼저 처리한 동작들도 모두 처음 상태로 되돌려야한다.

  • 일관성(Consistency) : 트랜잭션이 성공적으로 처리되면 데이터베이스의 관련된 모든 데이터는 일관성을 유지해야함.

  • 고립성(Isolation) : 트랜잭션은 독립적으로 처리되어야 하며 처리되는 중간에 외부에서의 간섭은 없어야 한다. 서로 다른 트랜잭션이 동일한 데이터에 종시 접근할 경우 적절한 동시 접근 제어를 해야한다.

  • 지속성(Durability) : 트랜잭션이 성공적으로 처리되면 그 결과는 지속적으로 유지 되어야 한다.

 

1.아래와 같이 개별적으로 트랜잭션을 설정할수 있음

2.AOP를 이용하여 묶어서 트랜잭션을 설정한다.

 

2.아래와 같이 예외 발생할 경우 트랜잭션 처리를 한다.

 

 

댓글을 작성해보세요.

채널톡 아이콘