본문 바로가기
Spring

[TIL] 240125 Spring @Transactional

by studymode 2024. 1. 25.

Transaction: 하나의 작업

 

Rollback: not happen at all

 

@Transactional

Transaction을 관리하는 가장 작은 단위

 

트렌젝션 롤백 예외

- 런타임 예외가 발생하면 롤백한다

- 예외가 발생하지 않으면 커밋한다

 

쉽게 이야기하면 될거면 다 되고, 안될거면 다 안된다

계좌 조회에서 예를 들면,

잔액 확인 -> 상대방 계좌 확인 -> 금액 전송 ->

내 계좌에서 금액 마이너스 -> 상대방 계좌에서 들어온 금액만큼 더해줌 

등의 과정이 있다고 했을 때 이 중 하나라도 안되면 롤백

즉 마지막 작업까지 수행하지 않고 실패함

 

//사진 삭제
@Transactional
public ReviewResponseDto deleteReviewImage(Long categoryId, Long productId,
   Long reviewId, Long imageId){
    Product product = productRepository.getById(productId);
    checkProductCategoryAndCategoryIdEquality(product, categoryId);
    Review review = reviewRepository.getById(reviewId);
    checkReviewProductAndProductIdEquality(review, productId);
    reviewImageService.deleteReviewImage(reviewId, imageId);
    Review reviewAfterDelete = reviewRepository.getById(reviewId);

    return new ReviewResponseDto(reviewAfterDelete);
}

위 코드에서 보면

하나의 작업이라도 안되면 해당 메서드를 실행하지 못함

productRepository에서 getById가 안되면 deleteReviewImage메서드는 실행 안됨