Spring
[TIL] 240125 Spring @Transactional
studymode
2024. 1. 25. 23:50
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메서드는 실행 안됨