Tiny Star

@Transactional 2

[쿠폰] 쿠폰 생성 (@Transactional, CustomException)

쿠폰 정보를 받아서 DB에 저장하고 Redis에도 올리는 작업을 했다. (자세한 내용은 Git Issue 참고) 1. 요구사항1. 목적쿠폰 등록 시 DB와 Redis를 일관성 있게 관리하기 위해 등록 흐름을 명확히 분리한다.쿠폰 정보를 먼저 DB에 저장하고, 생성된 coupon_id를 기반으로 Redis에 재고를 등록하는 프로세스를 구현한다. 2. 작업 내용쿠폰 종류 등록 API 구현POST /api/admin/coupons API 생성쿠폰 이름(name), 총 수량(total_quantity) 등을 받아 DB에 저장저장 후 생성된 coupon_id를 반환쿠폰 재고 Redis 등록반환된 coupon_id를 사용하여 Redis에 coupon:{coupon_id}:stock으로 재고 등록필요 시 TTL(만..

프로젝트/쿠폰 2025.04.28

[Spring] @Transactional 트랜잭션 어노테이션

쿠폰 프로젝트를 진행하면서 사용하게 된 어노테이션이다. [클라이언트 요청] ↓POST /api/admin/coupons ↓[CouponService] ↓1. couponsRepository.save(coupon) 실행 ↓2. RedisTemplate 재고 등록Redis에 재고 등록을 하게되는데, 만약 이 때 오류로 Redis 등록에 실패했다면 DB에 저장된 데이터도 삭제하는게 좋다고 판단했다. 왜냐면 실패했을 시 똑같은 쿠폰을 다시 발행할텐데, DB 에는 동일한 이름의 쿠폰이 두 개가 등록되기 때문이다. 1. @Transactional@Transactional은 메서드 실행을 하나의 트랜잭션 단위로 묶어서,전체가 성공하면 커밋(commit),중간에 실패하면 롤백(rollback) 하게..

IT 2025.04.28
top