트랜잭션, 커밋, 롤백, 트랜잭션 전파

1. 트랜잭션

  • 데이터베이스에서 하나의 논리적인 기능을 수행하기 위한 작업의 단위를 말한다.

  • 데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.

2. 커밋

  • 여러 쿼리가 성공적으로 처리되었다는 것을 확정하는 명령어이다.

  • 트랜잭션 단위로 수행이 되고,

  • 변경된 내용이 모두 영구적으로 저장되는 것을 말한다.

  • 커밋이 수행되었다 = 하나의 트랜잭션이 성공적으로 수행되었다.

  • update, insert, delete 의 쿼리가 하나의 트랜잭션 단위로 수행이 되고

  • 이후에 데이터베이스에 영구 저장된다.

3. 롤백

  • 에러나 이슈 때문에 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소)를 말한다.

  • 커밋-롤백 덕분에 데이터의 무결성이 보장될 수 있다.

  • 변경 전에 변경 사항을 쉽게 확인할 수 있고, 해당 작업을 그룹화할 수 있다.

  • 따라서 트랜잭션 내에서는 외부 API 호출하는 것은 자제하는 것이 좋다. - 롤백도 생각해야하기 때문이다.

4. 트랜잭션 전파

  • 보통 트랜잭션을 수행할 때에는 커넥션 단위로 진행된다.

  • 커넥션 객체를 매번 넘겨서 수행을 해주어야 하는데, 그것이 귀찮기도 하고 어렵기도 하다.

  • 여러 트랜잭션 관련 매서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것을 트랜잭션의 전파라고 한다.

  • Spring framework 에서는 @Transactionl 어노테이션을 통해서 여러 쿼리 관련 코드들을 하나의 트랜잭션으로 처리한다.

Last updated