복붙노트

[SPRING] 스프링 데이터 MongoDB와 함께 낙관적 인 잠금을 사용하는 방법?

SPRING

스프링 데이터 MongoDB와 함께 낙관적 인 잠금을 사용하는 방법?

Spring Data MongoDB - Reference Documentation을 통해 설명 할 예제가 너무 단순 해 보인다.

특히 동시 환경에서 부실 데이터를 처리하는 방법을 이해하려고합니다. 예를 들어, 다음 엔티티가 있다고 상상해보십시오.

public class Person {

    private final String username;
    private final String firstname;
    private final String lastname;

    [...]

}

이제 CrudRepository를 사용하여 엔티티를 저장 / 업데이트 / 제거한 다음 두 스레드가 동일한 엔티티를 검색하고 그 중 하나가 엔티티를 제거하고 다른 엔티티가 lastname 필드를 업데이트하는 시나리오를 상상해보십시오. 저장 호출 전에 삭제 호출이 완료되면 내 엔티티가 제거 된 다음 다시 생성됩니다. 예상되는 동작은 저장 작업이 실패 할 때입니다.

지금까지이 문제를 해결하기위한 두 가지 옵션을 보았습니다.

내가 생각하기에이 저장소 중 일부를 푸시해야한다.

userRepository.updateLastname("uniqueUsername", "Archer");

그러나 내가하고 싶은 모든 유형의 업데이트가 새로운 방법을 필요로한다면 나의 저장소 인터페이스는 통제 할 수 없을 정도로 커질 것이라고 조금은 걱정이된다.

아직 실제로 질문을하지 않았 음을 알고 있습니다. MongoDB 용 Spring 데이터를 사용하여 응용 프로그램을 설계 할 때 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.@ org.springframework.data.annotation.Version을 속성에 사용하면 트릭을 수행해야합니다. 이에 대한 문서를 개선하기 위해 DATAMONGO-1275를 만들었습니다.

    @ org.springframework.data.annotation.Version을 속성에 사용하면 트릭을 수행해야합니다. 이에 대한 문서를 개선하기 위해 DATAMONGO-1275를 만들었습니다.

  2. from https://stackoverflow.com/questions/32085113/how-to-use-optimistic-locking-with-spring-data-mongodb by cc-by-sa and MIT license