김영한님 인강듣고/스프링 DB
스프링 트랜잭션 전파(propagation)
doriver
2024. 10. 30. 13:41
트랜잭션 전파의 기본 옵션인 REQUIRED를 기준
외부 트랜잭션이 수행중인데, 내부 트랜잭션이 추가로 수행된 경우


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

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