두 개의 최대 절전 엔터티가있다 : Order와 Items (save-update 캐스케이드가있는 일대 다, 특별한 것은 없다).최대 절전 모드 일대 다 SQL 실행 순서
두 명의 사용자가 동시에 두 개의 스레드에서 Session.saveOrUpdate (order) 작업을 트리거하는 새 항목을 추가하여 동일한 Order의 업데이트를 시작합니다.
Order와 Item 모두 Optimistic Lock을 지원하기 위해 @Version 열을 가지고 있으므로이 동시 편집은 OptimisticLockException으로 실패합니다.
그런 다음 데이터베이스 일관성을 높이고 해당 항목 중 하나에서 항목에 고유 제한 조건을 추가하려고합니다.
위의 경우를 반복하면 OptimisticLockException 대신 제약 조건 위반이 발생합니다! 최대 절전이하는 것처럼
이 보이는 (! 제약 voilation) ITEM 테이블에- INSERT 새 항목을
- 체크 낙관적 잠금
- UPDATE 주문 테이블
그것을 할 수 있습니다 Hibernate가 자식 아이템을 삽입하기 전에 낙관적 인 잠금을 체크 할 것인가?