Spring

트랜잭션 전파속성

whyWhale 2023. 2. 15.

Build Up

트랜잭션은 DBMS의 상태를 변경하는 일련의 작업 단위 이다. 기본특징으로 ACID(원자성, 일관성, 고립성, 지속성)를 가진다.

트랜잭션은 시작지점과 끝나는 지점이 존재한다. == 트랜잭션의 경계

트랜잭션의 시작은 커넥션을 가져오는 것에 시작하고 종료는 커밋 또는 롤백에 의해 종료된다.

JDBC의 기본 설정은 DB 작업 이후에 바로 커밋하는 옵션이 DEFAULT이다. 그러므로 자동 커밋 옵션을 false로 해주어야 새로운 트랜잭션이 시작하게 만들 수 있다.

 

 

What

트랜잭션의 전파속성은 트랜잭션 진행을 어떻게 할지 결정하는 속성이다.

*어떻게 == 새로운 트랜잭션을 열어? , 없이 그대로 진행시켜?, 이어붙여버려? 가 있다.

스프링은 전파속성을 제공하는 것 만큼 새로운 개념을 이용하고 있다.

내부적으로 논리 트랜잭션이라는 개념을 도입하여 쉽게 2개 이상의 트랜잭션을 손쉽게 다를 수 있게 해준다.

전파 속성은 종류에 따라 다른 행위를 한다.

 

트랜잭션의 종류

REQUIRED

  • 기존 트랜잭션이 없으면, 새로운 트랜잭션을 생성하고 있으면, 기존 트랜잭션에 참여한다.

REQUIRED_NEW

  • 기존 트랜잭션이 있으나 없으나 새로운 트랜잭션을 생성한다.

 

 

Why

애플리케이션 안에서 일어나는 일련의 작업에서 2개 이상의 트랜잭션을 필요로 할 때  간편하게 처리하기 위해서 존재한다.

그렇게 하기 위해서는 스프링은 논리 트랜잭션이라는 새로운 개념을 도입하여 해당 부분을 편리하게 해줬다.

'Spring' 카테고리의 다른 글

Validation Custom 하기  (0) 2023.02.24
@Transactional 동작원리  (0) 2022.12.23

댓글