문제가 되는 상황
- 두 사용자가 동시에 같은 데이터를 수정하는 경우 발생
- 사용자 A와 B가 동시에 같은 데이터를 수정
- A가 먼저 커밋한 후 B가 커밋시
- A의 변경 사항은 사라지게 되며
- B의 변경 사항만 남게됨.
해결 방안
- 마지막 커밋만 ㅇㅈ 하기
- 최초 커밋만 ㅇㅈ 하기
- 병합
- 충돌을 갱신하는 내용을 병합..
- 개발자가 직접 구현해야함?
- 그런데 이런 상황이 정상인가..
마지만 커밋만 ㅇㅈ은 기본적인 방식이다.
하지만 최초 커밋은 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 |