본문 바로가기
🌈 백엔드/스프링 프레임워크

스프링_DAO + Transaction 트랜잭션

by 개발자 알마 2023. 6. 27.
반응형

 

 

[1] Transaction


(1) Transaction 정의 ; Tx 

더이상 나눌 수없는 작업의 단위 

계좌 이체시 A 계좌 : 출금 /  B 계좌 : 입금 하는 일련의 과정이 한 묶음으로 처리가 되어야한다 

 

 

(2) Transaction 속성 : ACID 

  1. 원자성 Atomicity : 나눌수 없는 하나의 작업으로 다뤄져야한다
  2. 일관성 Consistency : Tx 수행 전과 후가 일관된 상태를 유지해야한다
  3. 고립성 Isolation : 각 Tx는 독립적으로 수행되어야한다 
  4. 영속성 Durability : 성공한 Tx의 결과는 유지되어야한다 

 

 

(3) commit & rollback 

커밋 commint : 작업 내용을 DB에 영구적으로 저장한다

롤백 rollback : 최근 변경 사항을 취소하고 마지막 커밋으로 복귀한다 

 

(4) 자동커밋 & 수동커밋 

자동커밋 : 명령 실행 후 자동으로 커밋이 수행한다 . rollback 불가 

수동커밋 : 명령 실행 후 "SET autocommit" 같이 명령을 내려야만 커밋이 수행한다. 

 

 

[2] isolation level


(1) isolation level 정의 

각 Tx를 고립시키는 정도에 따라 단계를 나눈다 

프로그램 실행중 여러 트랜잭션이 발생하고 그들이 얼마나 독립적으로 활동하는지를 지정한다 

 

(2) isolation level 단계 

 

프리  READ UNCOMMITED dirty read  커밋되지 않은 데이터도 읽기 가능
덜 프리  READ COMMITED phantom read  커밋된 데이터만 읽기가능
기본  REPEATABLE READ Tx가 시작된 이후 변경은 무시된다 
현재 트랜잭션이 사용중이라면 값을 변경되더라도 변경이 적용되지 않는다 
완전독립 SERIALIZABLE 한번에 하나의 Tx만 독립적으로 수행한다 
성능은 떨어지겠지만 데이터 품질은 올라간다 
트랜잭션A가 실행 중 트랜잭션 B가 대기하고 트랜잭션 A가 실행이 종료 된 후 트랜잭션 B가 실행된다 

 

 

 

트랜잭션의 관리를 위해 어노테이션이나 xml 설정할수 있어 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없게 설계되어있다 

 

[3] isolation level 실습


(1) DB 데이터 + 인텔리제이의 isolation level 설정 

 

 

(2) STS4 

 

오토커밋 off 

테스트 성공

 

오토커밋 off

데이터값 중복으로 데이터 미입력

 

오토커밋 on 

반응형

'🌈 백엔드 > 스프링 프레임워크' 카테고리의 다른 글

스프링_OOP 5대 설계원칙 - S O L I D  (0) 2023.08.12
스프링_ DB 데이터 객체 DAO  (0) 2023.07.20
스프링_테스트_JUnit  (0) 2023.06.28
스프링_AOP  (0) 2023.06.27
스프링_개념 개요  (0) 2023.04.30

댓글