스프링/6. 스프링 DB-2

57. 트랜잭션 전파 활용 4

sdafdq 2023. 10. 17. 11:58

이제야 본격적으로 트랜잭션 전파를 활용하기 시작했다.

리마인드 시켜보자면, 트랜잭션을 논리 트랜잭션과 물리 트랜잭션이라는 관점으로 나누면 상당히 관리하기가 편하다.

 

논리 트랜잭션은 말 그대로 어떤 논리적인 트랜잭션, 어.. 논리적이지, 실제로는 적용을 아직 안 했을 수도 있다는 그런 뜻이다. 논리적으로는 적용을 한 것이다.

물리 트랜잭션은 실제 물리적으로 트랜잭션을 적용 하는 것 이다.

 

그리고, 이 물리 트랜잭션은 가장 외부의 트랜잭션이나, REQUIRE_NEW 해서 새롭게 트랜잭션을 생성한 트랜잭션이나,

여튼 첫번째 트랜잭션만이 이 물리 트랜잭션을 다룰 수 있다.

 

이 물리 트랜잭션이 commit 혹은 rollback을 해야 비로소 진정 트랜잭션이 끝나는 것이다.

다른 것은 그냥 논리적으로 commit을 했다거나 rollback을 했다거나 하는 것이다.

 

참고로 첫번째 트랜잭션은 논리트랜잭션이면서 또한 물리 트랜잭션 인 것이다.

 

논리 트랜잭션은 개개의 트랜잭션,

물리 트랜잭션은 트랜잭션 범위의 주인? 같은 커넥션을 사용하면 그 커넥션을 말하는..

 

 

그럼 이제,

MemberRepository와 LogRepository의 @Transactional 주석을 풀었다.

이게 기본값으 REQUIRED이고, 이거는 기존에 트랜잭션이 있으면 그 트랜잭션을 이어받는 것 이기 때문에, 

기본값으로 다 참여가 된다.

즉, 저 셋중 하나라도 rollback된다면 다 rollback, 

그러므로 모두다 commit이 되어야 비로소 물리 트랜잭션이 commit 된다.

 

저렇게 처음 시작된 외부 트랜잭션에서만 물리 트랜잭션을 관리한다.

나머지 내부 트랜잭션은 그저 논리적으로만 commit이나 rollback이다.

 

'스프링 > 6. 스프링 DB-2' 카테고리의 다른 글

59. 트랜잭션 전파 활용 6  (0) 2023.10.17
58. 트랜잭션 전파 활용 5  (0) 2023.10.17
56. 트랜잭션 전파 활용 3  (0) 2023.10.17
55. 트랜잭션 전파 활용 2  (0) 2023.10.17
54. 트랜잭션 전파 활용 1  (0) 2023.10.17