Oracle Db의 테이블에서 한 번에 한 레코드 씩 읽는 응용 프로그램을 작성한 후 일부 처리를 수행 한 다음 동일한 테이블에 다시 저장합니다. 테이블의 상태 열을 유지하여 현재 진행중인 레코드 진행 상황을 추적합니다. 처음에는 레코드 상태를 'N'으로 선택하고 'U'로 업데이트하고 마지막에는 'P'로 변경합니다.Java 절전 기준을 사용하여 단일 쿼리로 선택 및 업데이트 수행 API
내 문제는이 응용 프로그램의 많은 인스턴스를 실행하고 싶지만 차단기가 'U'로 상태를 선택하고 업데이트하는 것이 단일 쿼리가 아니기 때문에 다른 인스턴스에서 선택 될 수 있습니다. 프로세스 1 선택 그런 다음 Process2는 동일한 레코드를 선택한 다음 Process1 업데이트 상태를 'U'로 변경합니다.이 문제를 해결하여 응용 프로그램을 분산시켜야합니다.
단일 트랜잭션으로 선택 및 업데이트 쿼리를 만들었지 만 문제가 해결되지 않기 때문에 추측합니다.이 논리는 맞습니까?
데이터베이스에 액세스하기 위해 최대 절전 모드를 사용하고 있습니다. 최대 절전 모드 자바를 사용하여 이것을 어떻게 얻을 수 있습니까?
위의 논리 (트랜잭션 관련)가 올바른 경우 다음 중 하나가 최대 절전 모드로 제공되는 경우 2 가지 방법으로이 작업을 수행 할 수 있습니다.
1 선택 1 개 쿼리
의 레코드를 업데이트 행을 2 선택 1 개 쿼리에 고정하고 'U'에 상태를 업데이트하기 위해 동일한 트랜잭션에서 다른 쿼리를 실행합니다. SQL에서 '업데이트를 사용하여이 작업을 수행 할 수 있지만 쿼리를 끝낼 때'최대 절전 기준을 사용하여이 작업을 수행하는 방법을 잘 모르겠습니다. 일기 또한 'forUpdate'API를 가지고 있지만 쿼리 생성 한 때문에 작동하지 않는 것 같아요 이 경우 Hibernate는 마지막으로 'for update'를 가지고 있지 않다.
는 사람이 기준을 사용하여 하나 개의 쿼리에이
죄송합니다. 'setLockMode'API는 'forUpdate'API가 아닙니다. – Rahul
이 게시물을 편집 할 수 있습니다. – JMelnik