[JPA] 두 번의 갱신 분실 문제 (Second Lost Updates Problem)

문제가 되는 상황

  • 두 사용자가 동시에 같은 데이터를 수정하는 경우 발생
  • 사용자 A와 B가 동시에 같은 데이터를 수정
  • A가 먼저 커밋한 후 B가 커밋시
    • A의 변경 사항은 사라지게 되며
    • B의 변경 사항만 남게됨.

해결 방안

  1. 마지막 커밋만 ㅇㅈ 하기
  1. 최초 커밋만 ㅇㅈ 하기
  1. 병합
    1. 충돌을 갱신하는 내용을 병합..
    1. 개발자가 직접 구현해야함?
    1. 그런데 이런 상황이 정상인가..

마지만 커밋만 ㅇㅈ은 기본적인 방식이다.

하지만 최초 커밋은 JPA 의 @Version 기능을 이용하여 원본 버전의 엔티티만 살릴수있다.

  • 그냥 낙관적 락 방식이라고 생각하면 된다.
  • 최초에 수정된 내용 반영 → 버전 변경
  • 이후의 트랜잭션이 수정 불가능이다 .
    • 책에서 너무 어렵게 설명해놓은거 아닌가 싶다


Uploaded by N2T

'자바 > JPA' 카테고리의 다른 글

[JPA] 낙관적 락 옵션  (0) 2023.11.21
[JPA]@Version 어노테이션에 대해여  (0) 2023.11.21
[JPA] 트랜잭션  (0) 2023.11.19
[JPA] 읽기 전용 쿼리 최적화(미완성)  (0) 2023.11.19
[JPA] 쓰기 지연와 JDBC 의 배치  (0) 2023.11.19