해결된 질문
작성
·
292
0
getTransaction()
을 통해 트랜잭션을 시작하면 트랜잭션 매니저에서 커넥션을 생성하여 DB 트랜잭션을 시작한다.commit()
혹은 rollback()
을 통해 트랜잭션을 종료하면 동기화 매니저에서 커넥션을 꺼내와 DB 트랜잭션을 커밋 혹은 롤백한다.getTransaction()
, commit()
, rollback()
은 DB에 직접 영향을 미치지 않고, 커넥션을 트랜잭션 용으로 동기화 혹은 종료시키는 역할인가요? 그렇다면 실질적으로 DB 상에서 트랜잭션을 시작하고, 커밋이나 롤백을 수행하여 반영하는 로직은 DataSourceTransactionManager
내부에 있나요?답변 1
2
안녕하세요. 남용님
생각하신 내용이 맞습니다.
그런데 트랜잭션 매니저의 구현체가 결국 DataSourceTransactionManager이기 때문에 우리가 트랜잭션 매니저에 commit()을 호출하는 것이 DataSourceTransactionManager에 commit()을 호출하는 것입니다. 그러면 그 내부에서 실제 DB 커넥션의 commit()을 호출하게 됩니다.
감사합니다.
아하 결국은 트랜잭션 매니저의 구현체를 주입해서 사용하니까 그렇게 연결되겠네요 감사합니다!!!!