0. 들어가며


개발할 때 자주 사용하는 @Transactional에 대해 막연히 알고있었던 것 같아 글로 정리해봅니다.

1. 기본 메커니즘


@Transactional은 무엇을 해주나?

를 간단히 살펴보면 아래과 같다.

<aside> 💡

  1. 스프링이 프록시를 만들어 메서드 호출을 가로채고
  2. PlatformTransactionalManager를 이용해 트랜잭션을 시작, 커밋, 롤백한다.
  3. 커넥션은 ThreadLocal을 통해 현재 스레드에 묶인다. </aside>

좀 더 자세히 알아보자

1. 프록시 생성

2. 호출 가로채기

3. 트랜잭션 시작 & 리소스 바인딩