문제 : 스프링프레임워크를 사용 중인 프로젝트에서 오류 발생 시 rollback 처리가 되지 않음
원인 분석:
1. 메소드에 transactional 어노테이션이 추가되어 있으므로 당연히 오류 발생 시 rollback 될거라 생각했으나, 일단 기본 어노테이션 속성은 예기치 못한 오류에 대해서 rollback하므로 어노테이션에 rollback속성 지정
2. rollback 속성을 지정했음에도 rollback이 실행되지 않았고, 그대로 DB update로 이어짐
3. transaction이 생성되지 않고 그냥 처리된단 생각이 들어 application-context.xml 확인
해결 방안 : <tx:annotation-driven transaction-manager="transactionManager"/> 설정이 없어 추가
참고: annotation-driven: 등록된 bean 중 transactional 어노테이션이 붙은 것들에 transaction 적용