Kotlin & Spring 트랜잭셔널

박미소·2024년 1월 22일
0

코틀린

목록 보기
32/44

DB가 제공하는 트랜잭션 기능을 사용하면 commit과 rollback으로 정상적인 작업이 가능하도록 할 수 있다.

계좌이체를 예시로 들면,

트랜잭션이 없다면 작업중 서버에 오류가 났을 때 중간에 이체된 돈은 그냥 사라지고 만다.

이런 서비스 참사를 막기 위해서 작업 중 하나라도 실패를 한다면 거래 이전으로 되돌리는데 이것을 롤백(rollback)이라고 한다.

롤백을 하게 된다면 결과적으로 오류가 나도 이체한 사람의 잔고가 감소하지 않는다.

그리고 모든 작업이 정상적으로 성공하는 경우 데이터베이스에 정상 반영하는 것을 커밋(commit)이라고 한다.

즉, 데이터 변경 쿼리가 DB에 반영되려면 commit을 호출해야 하고, 결과를 반영하고 싶지 않다면 트랜잭셔널을 이용해 rollback을 호출하면 된다.






피드백으로 받았던 무분별한 @Transactional 사용


DB가 제공하는 트랜잭셔널 어노테이션은 생성할 때 굳이 필요하지 않다. 외부 개입이 없기 때문이다. 오류가 난다면 DB에 반영이 되지 않는다.

0개의 댓글