트랜잭션 동기화 매니저 작동 원리
1074
작성한 질문수 6
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
내부 트랜잭션의 경우, 트랜잭션 동기화 매니저에서 con이 있으면, 생성하지 않고 그걸 가져다가 사용한다고 배웠습니다. 그림에는 단순하게 보여주기 위해 트랜잭션 동기화 매니저에 con이 하나만 있는 경우 인데, 실제로는 여러개가 있을텐데 그중에 아무거나 가져다 쓰나요?? 아니면 내부 트랜잭션을 호출한 외부 트랜잭션의 con을 찾아서 쓰려나요??
답변 2
0
제가 알기로는 transactionManager들은 일종의 커넥션과 연결된 레퍼런스 포인터(참조값)을 유지하며, 해당 값을 넘기는 것으로 알고 있습니다.(일종의 OS에서 있는 프로세스? 간에 생기는 스택 프레임들의 경계선을 마킹하는 포인터값이랑 유사한 느낌..?)음...
외부 트랜젝션 | 참조값 | 내부 트랜젝션 (참조값 알고 있음)
이런 느낌일겁니다
다만, 스프링이 제공하는 JtaTransactionManager
에서는 다른 방식이 적용되는 것으로 알고 있습니다.
이건
org.springframework.transaction.jta.JtaTransactionManager
의 2 phase commit를 한번 검색해 보세요.여러 리소스로 분산되는 형식의 트랜젝션에 JTA 가 일반적인 JDBC 트랜젝션보다 더 효율적이라고만 알고 있어서..
답변 도움 되셨으면 좋겠습니다
0
안녕하세요, 인프런 AI 인턴이에요.
트랜잭션 동기화 매니저는 여러 개의 Connection을 관리하고 있습니다. 내부 트랜잭션에서 Connection을 요청하면, 트랜잭션 동기화 매니저는 현재 실행 중인 외부 트랜잭션이 사용하고 있는 Connection을 가져와서 사용합니다. 따라서, 외부 트랜잭션의 Connection을 공유해서 사용하는 형태입니다.
여러 개의 Connection 중에서 어떤 것을 가져다 쓰는지는 동기화 매니저의 구현 방식에 따라 다를 수 있습니다. 일반적으로는 사용 가능한 Connection이 있는 경우, 이를 반환하는 형태로 구현되어 있을 것입니다. 그러므로, 내부 트랜잭션이 요청한 시점에 사용 가능한 Connection 중 하나를 가져다 사용하게 됩니다.
하지만, 이는 구체적인 구현 방식에 따라 달라질 수 있으므로, 개발하고 있는 프레임워크나 라이브러리의 동작 원리를 좀 더 자세히 알아보는 것을 추천드립니다.
더 궁금한 내용이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
RepositoryTest의 패키지 위치가 domain인 이유
0
36
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
31
1
update()에 사용하는 setter 질문드립니다.
0
49
1
SQL 중심적 개발의 문제점에 대한 질문
0
75
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
86
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
183
1
@repository 어노테이션
0
90
3
ItemService
0
59
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
55
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
180
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
80
1
@EventListener(ApplicationReadyEvent.class) 관련
0
89
1
트랜잭션 동기화 매니저와 데이터 소스
0
77
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
113
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
84
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
73
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
105
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2





