Spring

트랜젝션(Transaction)

장진혁 2023. 3. 2. 00:06

스프링을 공부하면서 @Transaction 어노테이션이 보여서 궁금했다. 잠깐 찾아보니

데이터 원자성을 보장하기 위해 오류가 생기면 롤백시키기 위한 것

트랜젝션이 보장이 안되면 수정 하고 삭제를 하는 로직이 있는데 수정을 완료하고 삭제에서 오류가 나서 삭제를 못했다.

그럼 이 상황은 트랙젝션 보장이 안되는 것이다.

트랜젝션이 보장이 되면 수정과 삭제가 하나라도 오류가나면 롤백시켜 원자성을 지키는 것이다.

 

트랜젝션은 데이터베이스에서 여러 개의 작업을 하나의 논리적 작업으로 묶어서 처리하는 것을 말한다.
예를 들어, 은행에서 계좌 이체를 할 때, 보내는 쪽 계좌에서는 돈을 빼고, 받는 쪽 계좌에는 돈을 넣어야 합니다. 하지만 만약 돈을 빼기만 하고 받는 쪽 계좌에 돈을 넣지 않는다면 데이터베이스에는 이러한 작업 내용이 남아있을 것입니다. 이러한 문제를 방지하기 위해 트랜젝션을 사용한다.
트랜젝션 4가지 특성
  1. 원자성(Atomicity) : 트랜젝션의 모든 작업이 완료되거나, 모두 취소되어야 한다. 즉, 트랜젝션의 작업 중 일부가 실패하면 전체 작업이 취소되어야 합니다.
  2. 일관성(Consistency) : 트랜젝션 실행 전과 실행 후에 데이터베이스가 일관된 상태를 유지해야 합니다. 즉, 트랜젝션 실행 전 데이터베이스가 유효한 상태였다면, 트랜젝션 실행 후에도 유효한 상태여야 합니다.
  3. 격리성(Isolation) : 여러 개의 트랜젝션이 동시에 실행될 때, 각각의 트랜젝션은 다른 트랜젝션에 영향을 받지 않고 독립적으로 실행되어야 합니다.
  4. 지속성(Durability) : 성공적으로 완료된 트랜젝션은 영구적으로 반영되어야 합니다. 즉, 시스템 오류 등의 문제가 발생해도 완료된 트랜젝션은 유지되어야 합니다.
데이터베이스에서 트랜젝션을 처리할 때는, 트랜젝션을 시작하는 BEGIN, 트랜젝션을 정상적으로 종료하는 COMMIT, 트랜젝션을 취소하는 ROLLBACK 등의 명령어를 사용한다고 한다.
데이터베이스에서 트랜젝션 처리는 매우 중요하다. 트랜젝션 처리를 잘못하면, 데이터 무결성이 깨질 수 있다. 따라서 데이터베이스를 다루는 개발자는 트랜젝션 처리에 대한 이해를 깊게 하고, 실제 업무에서도 안전하게 데이터를 처리할 수 있도록 노력해야 한다.