본문 바로가기
dev/Spring

[Spring] Transaction, Commit, Rollback

by dev_Step 2022. 7. 6.

>> Transaction

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

 - N개의 Transaction이 모두 성공하지 않으면 Transaction이 실행되기 전으로 Rollbak해야 한다.

 - N개의 트랜잭션을 1개의 트랜잭션으로 묶어서 처리해야한다.

 ◆ 트랜잭션의 속성 (원일이는 지독해)

    > 원자성(Automicity) : 나눌수 없는 하나의 작업으로 다뤄줘야 한다(입금/출금 ==> 하나의 작업으로)

    > 일관성(Consistency) : Tx가 수행전과 후가 일관된 상태를 유지해야 한다.

    > 독립성(Isolation) : 각 Tx는 독립적으로 수행되어야 한다.  (Tx가 다른 Tx에 영향을 끼치면안된다.)

      - Isolation Level

        --- READ UNCOMMITED : 커밋되지 않은 데이터도 읽기 가능 ==Dirty Read

        --- READ COMMITRED : 커밋된 데이터만 읽기 가능

        --- REPEATABLE READ : Tx가 시작된 이후 변경은 무시됨 (Default)

        --- SERIALIZABLE : 한번에 하나의 Tx만 수행 ( 직렬화 ) 

    > 지속성(Duration) : 성공한 Tx의 결과는 유지되어야 한다.

 

>> Commit : 작업 내용을 DB에 영구적으로 저장

  > AutoCommit : 명령 실행 후, 자동으로 커밋이 수행(Rollback 불가)[Default]

  > 수동커밋  : 명령 실행 후 , 명시적으로 Commit또는 Rollback을 입력 [명령어 - set autocommit ]

 

>>  Rollback : 최근 변경사항을 취소(마지막 커밋으로 이동) 

 

 

MySQL

 

'dev > Spring' 카테고리의 다른 글

[Spring] @Transactional-1  (0) 2022.07.12
[Spring] AOP-2  (0) 2022.07.12
[Spring] Di 따라하기 4  (0) 2022.06.22
[Spring] Di 따라하기 3  (0) 2022.06.22
[Spring] Di 따라하기 2  (0) 2022.06.22