Spring @Transactional - JdbcTemplate에 트랜잭션이 전파되는 원리 정리글
·
Web/정리글
Spring 환경에서는 JPA의 더티 체킹이나 Bulk Insert 등에서 성능 이슈로 인해 JdbcTemplate을 혼용해서 사용해야 할 때가 있다. (MySQL의 PK 전략이 IDENTITY AUTO INCREMENT 인 경우 가정)이때 우리는 자연스럽게 Service 계층에 @Transactional을 붙이고, 내부에서 jdbcTemplate.update() 등을 호출한다. 근데 여기서 이런 의문이 든다."나는 JdbcTemplate 메서드에 DB Connection을 넘겨준 적이 없는데, 어떻게 기존 트랜잭션에 참여해서 동작하는 걸까?" Spring이 어떻게 트랜잭션 컨텍스트를 유지하고 전파하는지, 그 핵심 원리인 트랜잭션 동기화(Transaction Synchronization) 에 대해 정리해..