트랜잭션

wangjh789·2022년 8월 12일
0

[Spring] 스프링-DB-1

목록 보기
7/15

데이터를 파일에 저장해도 되는데 DB에 저장하는 이유는 트랜잭션이라는 기능 때문이다.
모든 작업이 성공해 DB에 반영되는 것을 Commit
작업 중 하나라도 실패해서 이전 상태로 넘어가는 상태를 Rollback

트렌잭션의 격리수준

  • READ UNCOMMITED
  • READ COMMITED (일반적 수준)
  • REPEATTABLE READ
  • SERIALIZABLE

DB 연결구조와 DB세션

  • WAS가 DB 서버에 연결을 요청하고 커넥션을 맺게된다. 이때 DB서버는 내부에 세션을 만드는데 앞으로 해당 커넥션을 통한 모든 요청은 이 세션을 통해 실행하게 된다.
  • WAS가 SQL을 전달하면 해당 커넥션과 연결된 세션이 SQL을 실행한다.
  • 세션은 트랜젝션을 시작하고, 커밋 또는 롤백을 통해 트랜잭션을 종료한다. 그리고 이후에 새로운 트랜젝션을 다시 시작할 수 있다.
  • 사용자가 커넥션을 닫으면 세션은 종료된다.

트랜잭션 사용법 (= 수동 커밋)

데이터 변경 쿼리를 실행하고 결과를 반영하려면 commit을 호출하고, 결과를 반영하고 싶지 않다면 rollback 을 호출한다.
커밋을 호출하기 전에 임시로 데이터를 저장하는 것으로, 해당 트랜잭션을 시작한 세션에게만 변경 데이터가 보이고, 다른 다른 세션에게는 변경데이터가 보이지 않는다.
(다른 세션이 커밋되지 않은 데이터를 보게 된다면 DB 정합성에 문제가 발생한다. READ UNCOMMITED는 보인다.)

자동커밋 : 하나의 쿼리 실행 후 자동으로 커밋을 호출한다.
set autocommit true
수동커밋 : 모든 쿼리 실행 후 commit 명령어로 커밋을 호출해야 한다.
set autocommit false

profile
기록

0개의 댓글