unchecked exceptions 의 경우 예외가 터지면 rollback이 일어남
하지만 포인트가 부족하여 결제 취소 상태가 된 경우 Payment 상태가 CANCLED가 되어야 되며,
기록용 테이블에도 데이터가 쌓여야 하므로 롤백이 일어나면 안되었음.
if (!user.isPayable(series.getPrice())) {
payment.transit(Event.PAY_REJECTED);
throw new FailedPayment(message);
}
unchecked Exception은 noRollbackFor을 설정해줘야 한다.
@Transactional(noRollbackFor = FailedPayment.class)