• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

PessimisticLock 질문

23.02.20 20:30 작성 23.02.20 20:31 수정 조회수 289

0

강력한 데이터 정합성을 보장한다는 Pessimistic Lock이 데이터 자체에 Lock을 거는 방식이라고 한다면 여기서 적용되는 락 기능의 범위가 조회를 통해 얻은 Stock 엔티티 자체를 말하는 건가요 아니면 Stock 테이블 내 모든 값들을 접근하는데 있어 lock이 필요하다는 건가요~~?

답변 1

답변을 작성해보세요.

1

김현욱님 안녕하세요!

Stock 이라는 테이블이 있고 id: 1, id: 2 인 데이터가 있을 때 조건이 s.id = 1 이면 id 가 1인 row 에만 Lock 이 걸리고 조건이 s.id = 2 이면 id 가 2인 row 에만 Lock 이 걸리게됩니다.

감사합니다 :)

김현욱님의 프로필

김현욱

질문자

2023.02.26

좋은 말씀 감사드립니다. 추가 질문이 있는데요 일반적으로 테스트코드를 작성할 때 @Transactional을 사용하여 롤백을 하게되는데 멀티쓰레드 환경에서 테스트를 진행하기위해서는 @Transactional를 생략하게 됩니다. 이는 조사해보니 스프링이 기본적으로 여러 쓰레드를 통한 트랜잭션을 지원하지 않는다고 하더군요. 그럼 멀티쓰레드 환경에서 테스트를 진행할때 테스트 데이터를 롤백하고 싶을때는 어떻게해야되나요?

저는 테스트환경을 위한 h2 데이터베이스를 사용하거나 테스트컨테이너를 사용합니다!