스프링/5. 스프링 DB-1

16. 자동커밋, 수동 커밋

sdafdq 2023. 9. 29. 14:41

DB에서 

set autocommit true   하면 자동커밋(기본값)

set autocommit false 하면 수동커밋

 

자동커밋은 쿼리 한 줄을 완료할 때마다 커밋 됨.

 

편리하지만, 우리가 원하는 commit, rollback의 트랜잭션 기능을 활용할 수는 없다.

 

예를 들면 5천원 계좌이체 일 때

update member set money = money + ? where member_id = ?;

첫번째 ?가 5천원, 두번째 ?가 A,

 

update member set money = money - ? where member_id = ?;

첫번째 ?가 5천원, 두번째 ?가 B

 

이 두개가 완벽히 실행되어야 송금이 이루어 지는 것 이므로, 

저거 두개가 완벽히 실행 된 이후에 commit을 하고 싶다는 거다.

 

커밋을 하려면 그냥

'commit;'

하고 sql을 보내면 된다. 수동커밋 모드로 설정된 상태에서 

 

set autocommit false;
insert into member(member_id, money) values ('data3', 10000);
insert into member(member_id, money) values ('data4', 20000);
commit;

 

참고로 수동커밋이나 자동 커밋 저렇게 한번 설저아하면 해당 세션에서는 계속 유지됨.

 

보통 커밋모드는 자동이기 때문에 수동커밋모드로 설정하는 것을 트랜잭션 시작이라고도 표현 하기도 함.

 

 

'스프링 > 5. 스프링 DB-1' 카테고리의 다른 글

19. 조회할 때 락 가져오기  (0) 2023.09.30
18. DB 락  (0) 2023.09.29
15. 트랜잭션 개념  (0) 2023.09.28
14. DB 연결 구조와 DB 세션  (0) 2023.09.28
13. 트랜잭션  (0) 2023.09.28