[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.@ org.springframework.data.annotation.Version을 속성에 사용하면 트릭을 수행해야합니다. 이에 대한 문서를 개선하기 위해 DATAMONGO-1275를 만들었습니다.
@ org.springframework.data.annotation.Version을 속성에 사용하면 트릭을 수행해야합니다. 이에 대한 문서를 개선하기 위해 DATAMONGO-1275를 만들었습니다.
from https://stackoverflow.com/questions/32085113/how-to-use-optimistic-locking-with-spring-data-mongodb by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 스타터 상위 2.0.0 종속성을 찾을 수 없음 (0) | 2019.04.19 |
---|---|
[SPRING] JNDI에서 얻은 데이터 소스를 닫아야합니까? (0) | 2019.04.19 |
[SPRING] WebMvcConfigurationSupport없이 Spring HandlerInterceptor 등록하기 (0) | 2019.04.19 |
[SPRING] @Valid 유효성 검사에서 일부 필드 제외 (0) | 2019.04.19 |
[SPRING] 숫자와 다음, 이전의 Jpa 페이징 (0) | 2019.04.19 |