최대 절전 모드의 경우 LockModeType.OPTIMISTIC_FORCE_INCREMENT,이 잠금은 응용 프로그램 수준 또는 데이터베이스 수준에서 취해집니다.LockModeType.OPTIMISTIC_FORCE_INCREMENT는 응용 프로그램 수준 또는 데이터베이스 수준에서 취한 잠금입니다.
나는 낙관적 잠금을내어 다음 코드를 사용하고 있습니다 :
setting = this.entityManager.find(Setting.class, setting.getId(),
LockModeType.OPTIMISTIC_FORCE_INCREMENT);
setting.setUpdateTimestamp(new Date());
newSettingList.add(setting);
이 두 JVM의 실행은 둘 다 같은 방법을 가지고 갈등이 존재한다고 가정 해 봅시다 것이다이 경우이 잠금 장치를 사용할 수 있습니까?
내 관찰은 내가 디버깅 할 때마다 "newSettingList.add (setting);" 코드에서이 줄에서 나는 그 시점에서 데이터베이스의 변경 사항을 보지 못했습니다. 그렇다면 데이터베이스 수준에서 잠금이 어떻게 보장됩니까?
낙관적 인 잠금 전략을 사용할 때 동시에 편집하면 업데이트가 데이터베이스로 플러시 될 때 예외가 발생합니다. https://vladmihalcea.com/2015/02/09/hibernate-locking-patterns-how-does-optimistic_force_increment-lock-mode-work/ –
두 개의 다른 JVM에서 업데이트가 수행되는 경우에도이 예외가 throw됩니다. 두 개의 다른 기계에? 어떻게 그들이 서로를 알게 될까요? – Vrishank