본문 바로가기
수업 내용/[Spring] Spring

트랜잭션 (Transaction)

by 프롯 2023. 8. 7.

최근에 현업에서 일하고 있는 개발자 지인을 만났다.

취직할 때 기술 면접에 대해서 이야기 하다가 얼마나 알고 있느냐고 트랜잭션에 대해 물어보셨다.

내 나름대로의 대답을 했다고 생각했으나, 내 대답에 만족하지 못하시는 것 같았다.

 

그러니 트랜잭션을 제대로 알고 가보자

Spring 태그에 글을 올린건 제대로 사용해본게 Spring을 쓸때가 처음이기 때문에

 

 

트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다.

 

데이터베이스의 상태를 변화시킨다는 것은 질의어를 사용해 DB에 접근하는 것이다.

(select, insert, update, delete 이런 구문을 DML이라고 한다.)

 

그렇다면 작업의 단위란 무엇일까.

단순히 질의어 한 문장이 하나의 단위라고 생각하면 안된다.

작업 단위의 기준은 사용하는 사람이 임의로 지정할 수 있다.

트랜잭션을 적절해 사용하여 같이 수행되어야 하는 작업을 하나의 작업단위로 묶어 더 안전하게 설계가 가능하다.

 

 

 

트랜잭션의 특징은 크게 4가지로 구분된다.

 

  • 원자성 (Atomicity)
  • 일관성 (Consistency)
  • 독립성 (Isolation)
  • 지속성 (Durability)

 

원자성 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것이다.

 

일관성 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것이다. 

 

독립성은 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다.

 

지속성 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다는 점이다.

 

 

트랜잭션이 수행된 단위에 따라서 commit을 하거나 rollback이 가능하다.

 

 

스프링에선 @Transaction으로 메소드를 하나의 트랜잭션으로 (단위로) 묶을 수 있다.

'수업 내용 > [Spring] Spring' 카테고리의 다른 글

MVC 패턴 controller와 service 차이  (0) 2023.08.04
[Spring] 1. DI  (0) 2023.06.29
[spring] 0. 환경설정  (0) 2023.06.26