트랜잭션 전파의 기본 옵션인 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 |