본문 바로가기
김영한님 인강듣고/스프링 DB

스프링 트랜잭션 전파(propagation)

by doriver 2024. 10. 30.

트랜잭션 전파의 기본 옵션인 REQUIRED를 기준

외부 트랜잭션이 수행중인데, 내부 트랜잭션이 추가로 수행된 경우

스프링에서 이 경우 외부 트랜잭션과 내부 트랜잭션을 묶어서 하나의 트랜잭션을 만들어준다. 
내부 트랜잭션이 외부 트랜잭션에 참여하는 것이다. 이것이 기본 동작이고, 옵션을 통해 다른 동작방식도 선택할 수 있다. 

 

스프링은 이해를 돕기 위해 논리 트랜잭션과 물리 트랜잭션이라는 개념을 나눈다.

논리 트랜잭션들은 하나의 물리 트랜잭션으로 묶인다.

물리 트랜잭션 실제DB에 적용되는 트랜잭션을 뜻한다.
실제 커넥션을 통해서 트랜잭션을 시작( setAutoCommit(false)) 하고, 커밋, 롤백하는 단위이다.
논리 트랜잭션 트랜잭션 매니저를 통해 트랜잭션을 사용하는 단위이다.
원칙 모든 논리 트랜잭션이 커밋되어야 물리 트랜잭션이 커밋된다.
하나의 논리 트랜잭션이라도 롤백되면 물리 트랜잭션은 롤백된다.

 

모든 트랜잭션 매니저를 커밋해야 물리 트랜잭션이 커밋된다. 하나의 트랜잭션 매니저라도 롤백하면 물리 트랜잭션은 롤백된다.

 

 

'김영한님 인강듣고 > 스프링 DB' 카테고리의 다른 글

스프링의 트랜잭션 매니저 동작 흐름  (0) 2024.11.02
스프링 트랜잭션 @Transactional  (0) 2024.10.30
트랜잭션 이해  (0) 2024.10.26
스프링 트랜잭션 시작  (1) 2024.10.26
JDBC이해  (0) 2024.10.17