트랜잭션 전파에 있어 트랜잭션 매니저
스프링 트랜잭션 전파에 있어서, 외부 트랜잭션이 수행중이고 아직 끝나지 않았는데 내부 트랜잭션이 수행 된다면, 트랜잭션 코드는 각각 트랜잭션 매니저를 통해서 신규 트랜잭션인지 확인을 하고 트랜잭션을 시작하는 과정을 거치는 것이라 이해했습니다.
강의 자료 그림에서 본다면, 외부 트랜잭션코드와 내부 트랜잭션 코드가 서로 다른 트랜잭션 매니저로 부터 트랜잭션을 시작하는 것 처럼 표현되어 있는데, 이것은 같은 트랜잭션 매니저 아닌가요? definition이 다른 것일뿐.. 헷갈려서 질문 남겨 봅니다.
또한, DB 1편부터 들었던 의문인데, service 레이어에서 트랜잭션을 시작하면 트랜잭션 동기화 매니저에 넣어두고, 레포지토리에서는 트랜잭션 동기화 매니저로 부터 해당 connection을 꺼내서 해결하는데, 트랜잭션 동기화 매니저는 spring bean으로, singleton으로 자동 등록되어 있는건가요?
답변 부탁드립니다!
감사합니다.
답변 1
2
안녕하세요. :/님
같은 트랜잭션 매니저 입니다.
트랜잭션 동기화 매니저는 모든 필드가 static으로 구성되어 있습니다. 스프링 빈으로 등록되지는 않지만 static으로 구성되어 있어서 싱글톤처럼 사용됩니다. 추가로 더 정확한 메커니즘을 이해하려면 ThreadLocal이라는 개념을 학습해야 하는데, 이 부분은 스프링 핵심 원리 - 고급편을 통해서 이해하실 수 있습니다.
감사합니다.
RepositoryTest의 패키지 위치가 domain인 이유
0
29
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
29
1
update()에 사용하는 setter 질문드립니다.
0
47
1
SQL 중심적 개발의 문제점에 대한 질문
0
72
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
83
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
173
1
@repository 어노테이션
0
89
3
ItemService
0
58
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
54
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
178
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
77
1
@EventListener(ApplicationReadyEvent.class) 관련
0
88
1
트랜잭션 동기화 매니저와 데이터 소스
0
76
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
112
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
83
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
72
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
102
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2





