Skip to content

Commit 81f42d0

Browse files
committed
feat: 조회 비관적 락 메서드 추가
1 parent cd96b5d commit 81f42d0

3 files changed

Lines changed: 12 additions & 0 deletions

File tree

apps/commerce-api/src/main/java/com/loopers/domain/payment/PaymentRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public interface PaymentRepository {
88
Optional<Payment> findById(Long id);
99
Optional<Payment> findByOrderId(Long orderId);
1010
Optional<Payment> findByTransactionId(String transactionId);
11+
Optional<Payment> findByTransactionIdWithLock(String transactionId);
1112
Optional<Payment> findByIdempotencyKey(String idempotencyKey);
1213
List<Payment> findByStatus(PaymentStatus status);
1314
}

apps/commerce-api/src/main/java/com/loopers/infrastructure/payment/PaymentJpaRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import com.loopers.domain.payment.Payment;
44
import com.loopers.domain.payment.PaymentStatus;
5+
import jakarta.persistence.LockModeType;
56
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.data.jpa.repository.Lock;
68
import org.springframework.data.jpa.repository.Query;
79
import org.springframework.data.repository.query.Param;
810

@@ -19,4 +21,8 @@ public interface PaymentJpaRepository extends JpaRepository<Payment, Long> {
1921

2022
@Query("SELECT p FROM Payment p WHERE p.status = :status ORDER BY p.createdAt ASC")
2123
List<Payment> findByStatus(@Param("status") PaymentStatus status);
24+
25+
@Lock(LockModeType.PESSIMISTIC_WRITE)
26+
@Query("SELECT p FROM Payment p WHERE p.transactionId = :transactionId")
27+
Optional<Payment> findByTransactionIdWithLock(@Param("transactionId") String transactionId);
2228
}

apps/commerce-api/src/main/java/com/loopers/infrastructure/payment/PaymentRepositoryImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ public Optional<Payment> findByTransactionId(String transactionId) {
3535
return jpaRepository.findByTransactionId(transactionId);
3636
}
3737

38+
@Override
39+
public Optional<Payment> findByTransactionIdWithLock(String transactionId) {
40+
return jpaRepository.findByTransactionIdWithLock(transactionId);
41+
}
42+
3843
@Override
3944
public Optional<Payment> findByIdempotencyKey(String idempotencyKey) {
4045
return jpaRepository.findByIdempotencyKey(idempotencyKey);

0 commit comments

Comments
 (0)