@Version
JPA에서 주석은 어떻게 작동합니까?
다음과 같은 다양한 답변을 찾았습니다.
JPA는 항목의 버전 필드를 사용하여 동일한 데이터 저장소 레코드에 대한 동시 수정을 감지합니다. JPA 런타임이 동일한 레코드를 동시에 수정하려는 시도를 감지하면 마지막 커밋을 시도하는 트랜잭션에 예외가 발생합니다.
그러나 나는 그것이 어떻게 작동하는지 여전히 잘 모르겠습니다.
또한 다음 줄에서와 같이 :
버전 필드를 변경할 수없는 것으로 간주해야합니다. 필드 값을 변경하면 결과가 정의되지 않습니다.
버전 필드를 다음과 같이 선언해야 함을 의미합니까 final
?
UPDATE myentity SET mycolumn = 'new value', version = version + 1 WHERE version = [old.version]
. 누군가 레코드를 업데이트하면old.version
DB 의 레코드와 더 이상 일치하지 않으며 where 절은 업데이트가 발생하지 않도록합니다. '업데이트 된 행'은0
JPA가 감지하여 동시 수정이 발생했다는 결론을 내릴 수 있습니다.