2014-02-28 4 views
0

우리는 Java와 Hibernate를 사용하는 응용 프로그램을 가지고 있습니다. 낙관적 인 잠금과 관계형 데이터베이스를 사용합니다. 두 명의 사용자가 동시에 수정하려고하는 자원 풀이있는 일반적인 상황이 있습니다. 한 사용자는 자원을 편집 할 수 있고 다른 사용자는 화면에서 "스택 추적"을 가져옵니다. 이러한 상황을 처리하는 일반적인 방법은 무엇입니까? 비관적 인 잠금을 사용할 수는 있지만 응용 프로그램의 성능이 크게 저하됩니다 ...롤백 트랜잭션에 대한 일반적인 예외 처리

답변

2

스택 추적 대신 작업중인 데이터에 대한 동시 업데이트가 있음을 사용자에게 알리고 강제로 새로 고칩니다. 저장하기 전에. 그들이 편집 한 내용이나 사용자가 당신을 싫어할지라도 그대로 보존하십시오.

아니면 기술 솔루션을 찾고 계셨습니까?

+0

나는 또한 기술적 측면에 관심이 있습니다. 다른 트랜잭션이 이미 데이터에 대한 쓰기를 수행하여 트랜잭션이 롤백되면 특정 예외가 항상 throw됩니까? 그렇다면 응용 프로그램에서 일관되게 동일한 방식으로 처리하는 것이 쉽습니다. – user1340582

+0

낙관적 인 잠금 실패를 나타내는 여러 결과가 있다고 생각합니다. 예외에는 오류가 붙어 있으므로 getErrorCode()를 호출하고 "롤백"을 나타내는 하나 이상의 값과 일치하는지 확인하십시오. 개발을 위해서는 아마도 오류를 일으키고 반환 된 오류 코드를보고 코드에 연결하는 것이 가장 쉽습니다. –

+0

최대 절전 모드의 낙관적 인 잠금 실패는 데이터베이스 관련 예외가 아니기 때문에 기본 SQLException과 관련이 없다는 점에 유의할 가치가 있습니다. 그것은 행에 영향을주지 않는 업데이트입니다. –