본문 바로가기
Spring

Spring의 Transaction

by 개발하는 호빗 2024. 1. 12.

Spring에서의 Transaction

스프링에선 트랜잭션을 아래 2가지 개념으로 다룬다.

  • 물리 트랜잭션
  • 논리 트랜잭션

 

물리 트랜잭션은 커넥션을 통해서 실제 데이테베이스에 반영되는 작업 단위이고,

논리 트랜잭션은 로직과 엮어서 구성하는 작업 단위라고 보면 된다.

여러 개의 논리 트랜잭션을 묶어 하나의 물리 트랜잭션을 완성하며, 모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋된다.

하나의 데이터를 만들거나 읽어들이기까지 여러 논리적인 과정을 거친다고 이해할 수 있을 것이다.

하나의 물리 트랜잭션을 이루는 논리 트랜잭션
하나의 물리 트랜잭션을 이루는 논리 트랜잭션

 

 @Transactional

스프링은 트랜잭션 범위를 지정하는 데에 @Transactional을 사용한다.

트랜잭션 관리를 모듈화한 Spring의 대표적인 AOP이다.

AOP이기 떄문에 마찬가지로 Proxy 패턴으로 동작한다.

 

트랜잭션 전파

트랜잭션은 하나만 존재할 수도, 내부/외부에 다른 트랜잭션을 가질 수도 가지지 않을 수도 있다.

이때 트랜잭션의 커밋과 롤백을 어떤 정책으로 다룰 것인지 제어하는 것이 '트랜잭션 전파 Transaction Propagation'이다.

 

스프링 트랜잭션 전파 속성은 아래와 같이 있다.

REQUIRED

REQUIRED_NEW

MANDATORY

SUPPORTS

NOT_SUPPORTED

NESTED

NEVER

 

...이어서 정리 ...

 


참고

[1] https://escapefromcoding.tistory.com/734

[2] https://deveric.tistory.com/86

 

'Spring' 카테고리의 다른 글

RestTemplate _GET에 body를 넣어서 보내고 싶지만  (0) 2022.07.07