autocommit과 @Transactional의 차이

‍bng4535·2023년 4월 3일
0

평소 autocommit@Transactional 의 개념은 많이 들어 보았다. autocommit은 쿼리가 성공하면 commit하고 실패하면 rollback하니까 하나의 트랜잭션이 잘 작동하도록 @Transactional과 비슷한 기능을 하는구나 라고 이해하고 있었다.

하지만 autocommit@Transactional은 오히려 반대의 의미에 가깝다
autocommit이 설정되어 있을 때는 한 어떤 연속된 쿼리를 하나의 범위로 잡고 문제 발생 여부에 따라 commit, rollback을 하는 것이 아니라, 각각의 sql문을 하나의 트랜잭션처럼 취급하는 것이다. 따라서 10개의 sql문 중 3번째 sql문에서 문제가 발생한다면 3번째를 제외한 나머지 내용은 그대로 commit이 되는 것이다.

반대로 @Transactional은 특정 메서드 단위에 적용되어 해당 메서드 내 수행되는 sql문들 중 하나라도 문제가 생기면 rollback, 모두 문제가 없으면 commit하는 것이다. 즉 하나의 메서드에서 실행되는 내용을 하나의 트랜잭션으로 처리하는 것이다.

참고

setAutoCommit 의 true, false 차이 https://wolfwideweb.tistory.com/95

profile
공부 기록

0개의 댓글