반응형

@Transactional 어노테이션의 noRollbackFor에 롤백하지 않을 런타임 예외를 다음과 같이 지정해주면 됩니다.

 @Transactional(noRollbackFor = LoginFailureException.class)

 

 

처음 스프링을 처음 접했을 때는 아래처럼 생각없이 그냥 native query로 commit을 날려줬었는데, 무식한 방법이었습니다.

public class SignService {
    
    @PersistenceContext
    private final EntityManager entityManager;

    @Transactional
    public UserLoginResponseDto login(UserLoginRequestDto requestDto){
        ...
        if(...) {
            ...
            entityManager.createNativeQuery("commit").executeUpdate();
            throw new LoginFailureException();
        }
        ...
    }
...

 

반응형

+ Recent posts