트랜잭션(Transaction)

박세건·2023년 3월 25일
0
post-thumbnail

트랜잭션이란?

트랜잭션이란 우리 말로 '거래' 라는 의미를 갖고있다.
트랜잭션의 개념은 모든작업들이 성공적으로 완료되어야 작업 묶음의 결과를 적용하고, 어떤 작업에서 오류가 발생했다면 이전의 작업들의 이상이 없더라도 없었던 일처럼 처음으로 되돌리는 것이다.

데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 한다.

스프링에서 트랜잭션 처리를 하는 방법은 @Transactional 을 사용한다 (어노테이션 글에서 추가로 설명한다)

주의! id 즉 PK AutoIncrement옵션이 적용되었다면 트랜잭션이 롤백되어도 다시 감소하지않는다! 이는 동시성때문이다! 여러 사람이 동시에 한 사이트에서 회원가입을 한다면 실패할지 성공 할지 모르기에 성공 여부를 기다렸다가 id 를 부여받기엔 얼마나 기다려야되는지 알 수 없다.
따라서 Auto Increment는 트랜잭션과 별개로 동작한다!

일련의 작업들을 묶어서 하나의 단위로 처리하고 싶다면 @Transactional을 활용하자.

참조

profile
멋있는 사람 - 일단 하자

0개의 댓글