스프링에서는 transaction에 대한 roll back 처리를 위해 @Transactional을 사용합니다. 해당 Annotation은 메소드 혹은 클래스에 다음처럼 사용할 수 있습니다.
@Transactional
public class transactionalTestClass{
...
}
@Transactional
public void transactionalTestMethod() {
...
}
@Transactional의 기본 적용 범위
@Transactional 에는 다양한 option을 붙일 수 있는데, 아무 옵션 없이 해당 Annotation을 붙이면 Unchecked Exception과 Error 만을 roll back 처리 해줍니다.
💡
Attribute Semantics
If no custom rollback rules are configured in this annotation, the transaction will roll back on
RuntimeException
and Error
but not on checked exceptions.
… 중략(Checked Exception과 Unchecked Exception에 대해 잘 모른다면 여기를 확인해보세요)
따라서 Checked Exception을 포함한 모든 예외에 대해서 roll back을 진행하려면 다음과 같이 옵션을 부여하면 됩니다
@Transactional(rollbackFor=Exception.class)
Reference.