Spring과 JPA/Hibernate를 사용하여 비관적 인 오프라인 잠금을 구현하려고합니다. 나는 모든 잠금 (잠긴 레코드의 ID, 타임 스탬프 및 사용자)을 저장하는 데이터베이스에 잠금 테이블을 가지고 있습니다. LockManager 서비스 인터페이스는 다음과 같습니다.비관적 인 오프라인 잠금 (Java, Spring)
public interface LockManager {
@Transactional(isolation=Isolation.SERIALIZABLE)
public Boolean TestAndGetLock(Application app, User user);
public void realeaseLock(Application app, User user);
}
메소드 TestAndGetLock은 먼저 레코드에 대한 기존 잠금이 있는지 테스트합니다. 있을 경우 true를 반환하고 종료됩니다. any가 없으면 false를 리턴하고 잠금을 작성합니다 (잠금 테이블에 새 잠금을 작성합니다). 그런 다음에 만 webapp가 실제로 비즈니스 트랜잭션을 시작합니다 (이 경우 매개 변수로 전달 된 응용 프로그램의 편집 양식을 보여줍니다).
이 디자인이 맞는지 말해 줄 수 있습니까? 이름이 더 명확 할 것이다, 그래서 여기에
public boolean lock(Application app, User user);
public void unlock(Application app, User user);
:
사용자 정의 격리 수준은 일반적으로 jpa/hibernate 트랜잭션 관리자에서 작동하지 않습니다. – Bozho
왜 그럴까요? 지원되지 않습니까? –