-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
트랜잭션 시작 및 종료 관련 질문 있습니다!
24.01.15 12:02 작성 조회수 181
0
안녕하세요 강의 듣다가 제가 이해한 게 맞는지 확인 차 질문 드립니다!
- 시작 : 서비스 계층에서
getTransaction()
을 통해 트랜잭션을 시작하면 트랜잭션 매니저에서 커넥션을 생성하여 DB 트랜잭션을 시작한다. - 종료 : 서비스 계층에서
commit()
혹은rollback()
을 통해 트랜잭션을 종료하면 동기화 매니저에서 커넥션을 꺼내와 DB 트랜잭션을 커밋 혹은 롤백한다.
getTransaction()
, commit()
, rollback()
은 DB에 직접 영향을 미치지 않고, 커넥션을 트랜잭션 용으로 동기화 혹은 종료시키는 역할인가요? 그렇다면 실질적으로 DB 상에서 트랜잭션을 시작하고, 커밋이나 롤백을 수행하여 반영하는 로직은 DataSourceTransactionManager
내부에 있나요?
답변을 작성해보세요.
2
김영한
지식공유자2024.01.15
안녕하세요. 남용님
생각하신 내용이 맞습니다.
그런데 트랜잭션 매니저의 구현체가 결국 DataSourceTransactionManager이기 때문에 우리가 트랜잭션 매니저에 commit()을 호출하는 것이 DataSourceTransactionManager에 commit()을 호출하는 것입니다. 그러면 그 내부에서 실제 DB 커넥션의 commit()을 호출하게 됩니다.
감사합니다.
답변 1