분리 된 객체에 대해 기본 낙관적 잠금을 최대 절전 모드로 전환합니까?
void deleteObj(id){
MyObj obj = getObjById(id);
if (obj == null) {
throw new CustomException("doesn't exists");
}
em.remove(obj);//em is a javax.persistence.EntityManager
}
명시 적으로 optimistic locking 버전 필드를 구성하지 않았습니다. 그러나 두 개의 요청이 병렬로 실행중인 경우 동일한 개체를 삭제하려고하면 때때로 HibernateOptimisticLockingFailureException이 발생합니다. 및 다른 시간 "CustomException".
명시 적으로 낙관적 잠금을 설정하지 않고 HibernateOptimisticLockingFailureException을 얻는 것이 정상입니까? 분리 된 객체에 대해 기본 낙관적 잠금을 최대 절전 모드로 전환합니까?
이 HibernateOptimisticLockingFailureException을 처리하기 위해 무엇을하고 있습니까? 다시 시도하거나 "서버 사용 중"과 같은 기본 메시지를 사용하여 사용자에게 알리십시오.
tks! "존재하지 않는 행을 삭제하거나 업데이트하려고하면 발생합니다."이것이 내 경우 인 것처럼 보입니다. 예외를 처리하는 좋은 방법은 무엇입니까? 다시 시도 하시겠습니까? 또는 "서버 사용 중"과 같은 기본 메시지를 보내야합니까? –
알다시피, 행을 다시 나타나게 만들 가능성은 희박합니다. 바쁜 서버로 인해 데이터베이스에서 행이 사라지지 않아야합니다. – meriton
처리 방법은 예외를 무시하십시오. 삭제를 실행하면 행이 더 이상 존재하지 않게됩니다. 이미 삭제 한 경우 행 아웃이 이미 완료된 경우입니다. – meriton