인프런 커뮤니티 질문&답변

김현욱님의 프로필 이미지
김현욱

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

PessimisticLock 질문

작성

·

339

·

수정됨

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 이 걸리게됩니다.

감사합니다 :)

김현욱님의 프로필 이미지
김현욱
질문자

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

최상용님의 프로필 이미지
최상용
지식공유자

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

김현욱님의 프로필 이미지
김현욱

작성한 질문수

질문하기