반응형

transactionManager 2

[Spring 공식 문서 기반] Transaction 2. PlatformTransactionManager는 왜 인터페이스일까

1편에서는 Spring Transaction이“왜 ThreadLocal로 관리될 수밖에 없었는가”를 웹 요청 모델과 실행 흐름 관점에서 살펴봤습니다.이제 다음 질문으로 자연스럽게 이어집니다.트랜잭션을 실제로 시작하고, 커밋하고, 롤백하는 주체는 도대체 누구일까?이 질문의 중심에 있는 것이 바로PlatformTransactionManager입니다.1. 많은 개발자가 잘 보지 않는 인터페이스Spring에서 트랜잭션을 사용할 때 우리는 보통@Transactionalpublic void service() { // business logic}만 작성합니다.그 아래에서 어떤 클래스가트랜잭션을 시작하고리소스를 묶고커밋/롤백을 수행하는지는 거의 의식하지 않습니다.하지만 Spring 공식 문서에서는 트랜잭션의 핵심..

[Spring 공식 문서 기반] Transaction 1. 트랜잭션은 왜 ThreadLocal로 관리될까

Spring에서 트랜잭션을 처음 접하면 대부분 이렇게 사용합니다.@Transactionalpublic void service() { // 비즈니스 로직}하지만 시간이 지나면 자연스럽게 이런 질문이 생깁니다.트랜잭션은 대체 어디에 저장돼 있을까?그리고 왜 비동기에서는 전파되지 않을까?이 질문의 핵심에는ThreadLocal이라는 선택이 있습니다.이번 글에서는 Spring Transaction 공식 문서를 기준으로,“왜 트랜잭션은 ThreadLocal로 관리될 수밖에 없었는가”를 설계 관점에서 풀어보겠습니다.1. 트랜잭션은 ‘기능’이 아니라 ‘상태’다많은 개발자가 트랜잭션을“commit / rollback을 해주는 기능”으로 인식합니다.하지만 Spring 공식 문서에서 트랜잭션은“현재 실행 흐름에 묶인 ..

반응형