재시도 인터셉터를 사용하여 기본적인 낙관적 잠금 메커니즘을 구현하려고합니다.jpa/spring/hibernate에서 간단한 낙관적 인 잠금 질문
속성은 respondCount 속성을 가진 객체 퀴즈입니다. 퀴즈를 업데이트하는 동안 낙관적 인 Lock 예외가 발생하면 각각의 업데이트 메소드가 재시도 인터셉터에서 다시 호출됩니다.
재 시도 된 메소드가 매번 동일한 버전 번호를 가지기 때문에 무언가가 올바르지 않은 것이고, 그 이유는 무엇이든지 상관없이 트랜잭션을 실패하게 만듭니다.
버전 10
공정 A : 업데이트 시작 퀴즈 버전 10 개 공정 B : 업데이트 시작 퀴즈 버전 10 공정 B : 마무리 업데이트 퀴즈 버전 11 공정 A : 낙관적 예외 던져진 업데이트 퀴즈, 다시 시도 A 프로세스 재 시도 된 메서드 내 버전은 항상 10
어떻게해야합니까? 트랜잭션을 성공시키기 위해 버전을 자동으로 증가시켜야합니다.
수를 잠글 필요가 있습니다. 그렇지 않으면 두 클라이언트가 '1'을 읽은 다음 올바른 수가 '3'일 때 '2'를 쓰게됩니다. – tgdavies