본문 바로가기
(2024-10) 스파르타 내일배움캠프 - 백엔드/TIL

(2025-01-27) 트러블슈팅

by 어뫄어뫄 2025. 1. 27.

 

Log 를 구현하는 과제에서 트랜젝션 문제가 있었다. @Transactional로 처리하며 매니저 등록이 실패해도 Log는 남기는 것이 목표였다.

 

Spring의 @Transactional 어노테이션의 propagation 속성을 활용했다. 로그 저장을 담당하는 LogService의 writeLog 메서드에 @Transactional(propagation = Propagation.REQUIRES_NEW)를 적용하여 새로운 별도의 트랜잭션을 생성하도록 했다. 이를 통해 매니저 등록 트랜잭션이 롤백되더라도 로그 저장 트랜잭션은 영향을 받지 않고 커밋되어 로그가 항상 기록되도록 구현했다.