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메서드는 실행 안됨
'Spring' 카테고리의 다른 글
[TIL] 240203 WAS (0) | 2024.02.04 |
---|---|
[TIL] 230201 N+1 문제 해결 Join fetch, BatchSize (0) | 2024.02.01 |
[TIL] 240123 최종 프로젝트: 키워드 기반 상품 검색 (0) | 2024.01.23 |
[TIL] 240119 AWS EC2 (0) | 2024.01.19 |
[기술면접] 240118 OAuth, 클래스형과 함수형의 차이 (0) | 2024.01.18 |