Spring

@Transactional은 어떻게 실제 DB에 적용이 되는지 요약

정재익 2025. 12. 10. 15:20

요약

1. 최초에 히카리데이터소스에서 풀엔트리크리에이터 생성 풀 엔트리크리에이터에서 콜() 호출

2. 히카리풀에서 createPoolEntry() 호출 PollBase에서 newPollEntry() 호출 뉴커넥션 호출 히카리데이터소스에서 겟커넥션 호출 커넥션 반환
3. 커넥션을 복사해서 커넥션풀 만큼 커넥션을 만듬

4. @Tramsctional 달린 메소드 시작 트랜잭션인터셉터 호출

5. TransactionAspectSupport의 invokeWithinTransaction() 호출 createTransactionIfNecessary() 호출 

6. 플랫폼트랜잭션매니저의 구현체인 AbstractPlatformTransactionManager에서 겟트랜잭션시작

7. AbstractPlatformTransactionManager을 상속받은 하이버네이트트랜잭션매니저에서 doBegin()

8. 세션(SessionImpl) 이 이미존재하면 세션반환 존재하지 않으면 AbstractSharedSessionContract에서 JdbcCoordintor호출 물리적 커넥션 반환
9. DataSorceUtil에서 prepareConnectionForTransaction() 에 커넥션 삽입 후 격리수준 반환

10. HibernateTransactionObject에 격리수준 삽입 

11. TransactionSynchronizationManager에 데이터소스와 커넥션 삽입

12. 작업진행

13. TransactionAspectSupport에서 commitTransactionAfterReturning() 호출 AbstractPlatformTransactionManager에서 commit호출 트랜잭션끝

 

'Spring' 카테고리의 다른 글

컨테이너, IOC 컨테이너  (0) 2025.12.21
애플리케이션 컨택스트  (0) 2025.12.21
빈 팩토리  (0) 2025.12.21
스프링 빈  (0) 2025.12.21
스프링 AOP  (0) 2025.12.13