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