인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김상운님의 프로필 이미지
김상운

작성한 질문수

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

Propagation.REQUIRES_NEW 를 사용하는 이유가 무엇인가요?

작성

·

1.1K

2

안녕하세요! 선생님.

다른 락에서는 트랜잭션에 Propagation.REQUIRES_NEW 를 사용하지 않았는데 namedLock 에서는 왜 사용하나요?

답변 3

4

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

안녕하세요.

부모의 트랜잭션과 동일한 범위로 묶인다면 Synchronized 와 같은 문제가 발생합니다.

Database 에 commit 되기전에 락이 풀리는 현상이 발생합니다.

그렇기때문에 별도의 트랜잭션으로 분리를 해주어 Database 에 정상적으로 commit 이 된 이후에 락을 해제하는것을 의도하였습니다.

핵심은 lock 을 해제하기전에 Database 에 commit 이 되도록 하는것입니다.

감사합니다.

0

Named locks are used to synchronize access to specific resources in a multi-threaded or distributed environment. In Spring, you can use the @Lock annotation to apply locks on methods or class-level house of hazards, and you can also specify the propagation behavior of the lock by using the @Transactional annotation.

 

0

김상운님의 프로필 이미지
김상운
질문자

Synchronized 사용 시 스프링의 트랜잭션 메커니즘과 같은 원리 때매 그런거였군요! 감사하니다.

김상운님의 프로필 이미지
김상운

작성한 질문수

질문하기