트랜잭션 적용 -> @Transactional
@Transactional
public void saveUser(UserCreateRequest request){
userRepository.save(new User(request.getName(), request.getAge()));
throw new IllegalArgumentException();
}
에러 발생 시 트랜잭션을 붙이지 않으면 어떤일이?
1. userRepository.save(new User(request.getName(), request.getAge())); - 실행
2. throw new IllegalArgumentException(); - 여기서 에러 걸림
서버내부 오류는 나지만 save 쿼리가 이미 실행되어 저장됨
트랜잭션을 붙이면
예외처리 되면서 rollback해 저장도 되지 않는다.
주의사항
IOException과 같은 Checked Exception은 rollback이 일어나지 않는다.