내 앱 엔진 데이터 저장소 코드를 디자인하려고하는데 잠재적 인 문제를 생각해 보았고 문서에서 특정 상황에서 발생할 수있는 구체적인 정보를 찾을 수 없었습니다.엔티티의 조상이 존재하지 않으면 생성됩니까 (Java API)?
조상이있는 엔티티를 저장하기 전에 저장하기 전에 해당 조상이 하나의 트랜잭션에 존재하는지 확인하고 존재하지 않으면 상위 항목을 만듭니다. 다음으로 엔티티를 저장하고 이전 단계에서 찾거나 생성 한 조상 키를 사용하여 엔티티를 저장 한 다른 트랜잭션을 시작합니다. 단일 사용자 또는 소수의 사용자 만 테스트 할 경우 동시 수정 기회가 최소 일 때 문제가되지는 않지만 배포 된 후에는 첫 번째 트랜잭션 (조상 생성/검색)과 두 번째 트랜잭션 (상위 엔티티의 하위 항목으로 엔티티 추가)을 사용하면 다른 사용자가 조상을 삭제할 수 있습니다.
초기 생각은이 모든 것을 하나의 트랜잭션으로 발생시키는 것이었지만 조상이 존재하지 않아 생성 되어야만하는 경우에는 생성하려는 엔터티가 존재하는지 확인하기위한 조상 쿼리가 실패했습니다. 데이터 저장소의 스냅 샷 격리 모델. 그러나 이것이 맞는지 확실하지 않습니다.
누구든지이 문제에 대해 지식이 있습니까? 조상이 삭제 된 경우, 엔티티는 여전히 아무것도 나타내지 않는 상위 키로 작업을 계속 진행합니까? 이것은 부모를 다시 생성 할 것인가? 그래서 미래의 체크가 동일한 키를 반환 할 것인가? 나는이 상황을 시험 할 것이지만 그렇게 할 실제 방법을 고안 할 수는 없다.
입력 해 주셔서 감사합니다. 나는 오늘 그렇게하는 방법을 살펴보고 돌아와서 유망 해 보이는 대답을 받아 들일 것입니다. – Jared