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

15. 트랜잭션 개념

sdafdq 2023. 9. 28. 21:44

사실 내부의 트랜잭션 동작은 DB마다 다 다르긴 함. 

이것도 예시의 하나 이긴 함.

 

 

 

DB 변경 쿼리를 실행하고, 그 결과를 DB에 저장하려면 commit, 저장하고 싶지 않다면 rollback

 

commit 호출 전 까지 데이터는 임시로 저장하는 것임.

사실 우리가 그냥 쿼리만 날려도 DB에 저장이 되었는데, 그게 오토 커밋 모드라서 그럼.

수동 커밋 모드면 우리가 직접 commit도 해 줘야 함.

 

 

이런 느낌이다. 세션 1에서 테이블 조회하면 볼 수 있지만, 다른 세션에서 조회하면 볼 수 없다.

 

저렇게 세션 1에서만 임시로 보이고, 커밋을 해야 비로소 DB에 제대로 저장이 되는 것이다.

 

만약 커밋 되지 않은 상태로 트랜잭션 레벨을 설정해서 볼 수 있다고 가정했을 때, 

세션 1이 저렇게 해놓은 상태에서, 세션2가 저걸 보고 뭔가를 update 쿼리를 날렸는데 만약 세션1이 그냥 롤백을 해버린 다면

데이터가 일치하지 않는 데이터 정합성의 문제가 일어날 수 있다.

문제의 소지가 많아 READ UNCOMMITED는 안쓴다.

 

 

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

18. DB 락  (0) 2023.09.29
16. 자동커밋, 수동 커밋  (0) 2023.09.29
14. DB 연결 구조와 DB 세션  (0) 2023.09.28
13. 트랜잭션  (0) 2023.09.28
12. 커넥션 풀 적용  (0) 2023.09.28