Search

TransactionSynchronizationManager

트랜잭션 동기화를 지원한다.
하나의 쓰레드에서 논리적으로 같은 트랜잭션에 있는 로직들을 물리적으로 같은 트랜잭션에 있도록 지원한다.
definition 을 관리한다.
definition 에는 격리 수준, 전파 레벨, readOnly 등의 정보가 담긴다.
쓰레드로컬에 저장하고, 쓰레드 이름, 메서드 이름으로 같은 트랜잭션인지 확인한다.
map 형태로 저장한다.
getResouce 가 주된 메서드이다.
key 는 메서드 이름, value 는 entityManagerHolder
디버깅해보니, hikariPool-1 은 커넥션 홀더, 메서드(findById, save 등)는 엔터티 매니저 홀더로 가져감. 메서드가 끝나면 map 에서 사라짐
사용처
TI → TAS → APTM → JTM
CMMPP(CrudMethodMetadataPostProcessor)
Repository → DefaultQueryHints
EntityManagerFactoryUtils(doGetTransactionalEntityManager)