• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

22.08.25 17:56 작성 조회수 774

2

안녕하세요! 선생님.

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

답변 3

·

답변을 작성해보세요.

4

안녕하세요.

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

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

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

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

감사합니다.

0

lornajennings680님의 프로필

lornajennings680

2023.07.20

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

김상운님의 프로필

김상운

질문자

2022.08.25

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