2012-01-16 4 views
0

@Version을 사용하는 엔티티 클래스가 있습니다.null Hibernate @Version, 왜 StaleObjectStateException이 발생하지 않습니까?

@Version 
protected Long auditVersion; 

엔티티의 첫 번째 항목을 삽입하려고하는 두 개의 스레드가 있으면 어떻게됩니까? 엔터티의 두 인스턴스 모두 auditVersionnull으로 설정됩니다. 그것은 최대 절전 모드가 낙관적 인 잠금 실패에 대해 아무런주의를 기울이지 않는 것처럼 보입니다. 나는 StaleObjectStateException을 기대하지 않습니다.

왜 안 되니?

답변

1

낙관적 잠금은 동시 업데이트 및 제거를 처리하는 데 사용되기 때문에. 두 개의 스레드가 동일한 ID로 두 개의 엔티티를 삽입하려고하면 기본 키의 고유 제한 조건으로 충돌을 감지 할 수 있습니다. 이를 위해 낙관적 인 잠금 장치가 필요하지 않습니다.

관련 문제