트랜잭션, 커밋, 롤백, 트랜잭션 전파
1. 트랜잭션
데이터베이스에서 하나의 논리적인 기능을 수행하기 위한 작업의 단위를 말한다.
데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.
2. 커밋
여러 쿼리가 성공적으로 처리되었다는 것을 확정하는 명령어이다.
트랜잭션 단위로 수행이 되고,
변경된 내용이 모두 영구적으로 저장되는 것을 말한다.
커밋이 수행되었다 = 하나의 트랜잭션이 성공적으로 수행되었다.
update, insert, delete 의 쿼리가 하나의 트랜잭션 단위로 수행이 되고
이후에 데이터베이스에 영구 저장된다.
3. 롤백
에러나 이슈 때문에 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소)를 말한다.
커밋-롤백 덕분에 데이터의 무결성이 보장될 수 있다.
변경 전에 변경 사항을 쉽게 확인할 수 있고, 해당 작업을 그룹화할 수 있다.
따라서 트랜잭션 내에서는 외부 API 호출하는 것은 자제하는 것이 좋다. - 롤백도 생각해야하기 때문이다.
4. 트랜잭션 전파
보통 트랜잭션을 수행할 때에는 커넥션 단위로 진행된다.
커넥션 객체를 매번 넘겨서 수행을 해주어야 하는데, 그것이 귀찮기도 하고 어렵기도 하다.
여러 트랜잭션 관련 매서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것을 트랜잭션의 전파라고 한다.
Spring framework 에서는 @Transactionl 어노테이션을 통해서 여러 쿼리 관련 코드들을 하나의 트랜잭션으로 처리한다.
Last updated