2012-06-01 3 views
1

Hibernate를 사용하여 데이터베이스에서 값을 업데이트하고 값을 읽는 서비스를 실행하는 여러 대의 컴퓨터가 있습니다.Hibernate/HSQLDB에서 동시 잠금으로 업데이트가 발생합니까?

서비스에서 DB 값을 업데이트해야 할 때마다 업 그레 이드 nowait 잠금을 사용하고 잠금을받을 수없는 경우 나중에 다시 시도합니다.

void lock(Job job) { 
    sessionFactory.session.lock(job, LockMode.UPGRADE_NOWAIT); 
} 

내 서비스에서 DB 값을 업데이트해야하는 곳이 하나 있는데 다시 시도 할 수 없습니다. 그 자리에서 정상적인 업그레이드 잠금을 사용하는 것만 알면 값을 업데이트해야 할 때까지 기다릴 수 있습니다.

void waitForLock(Job job) { 
    sessionFactory.session.lock(job, LockMode.UPGRADE); 
} 

하지만 지금이 오류가 가끔 나타 참조 ...

org.hibernate.dialect.HSQLDialect - HSQLDB supports only READ_UNCOMMITTED isolation 

이 값이 최대 절전 모드를 사용하여 처음으로 업데이트 될 것이라는 점을 보장 할 수있는 방법이 있나요

?

답변

1

트랜잭션 분리를 지원하지 않는 이전 버전의 HSQLDB를 사용하고 있습니다. 최신 버전 (2.2.8 이상)을 사용하십시오.

관련 문제