동시에 여러 요청이 들어올 시? : 요청이 정확하게 반영되지 않는다.
여러 사람이 database에 접근해서 데이터를 수정할 시 동시에 접근해 수정이 일어나 충돌이 일어날 수 있습니다
자바에서 제공하는 synchoronized 키워드를 메서드에 입력해서 처리 가능. 다만 성능도 떨어지고 프록시 객체를 사용하는 경우 문제 발생 여지가 있음. 가장 큰 문제는 synchronized를 붙인다고 해서 동시성 문제를 전부 해결하지 못한다.
테이블의 row에 유저가 접근시 Lock을 걸고 다른 유저는 Lock이 걸려 있지 않을 경우에만 수정을 가능하게 하는 것
자체 락으로 정합성 맞춤
Pessimistic Lock 은 공연장 티케팅 할 때 먼저 접속한 사람이 좌석 선택하면 결제를 아직 안했어도 점유 된 걸로 보고 그 후에 접속한 사람한테 옵션 안 띄워주는 거
버전 정보를 통해 정합성을 맞춤
Optimistic Lock 은 수강신청 할 때 화면 로드 시점에는 인기 수업에 잔여석이 있는 걸로 확인하고 과목 선택해서 수강 신청 버튼을 눌렀는데 이미 다른 사람이 정보를 변경해서 마감되었고, 그것을 클릭하면 알 수 있다.
낙관적 락은 충돌이 많이 예상되거나 충돌이 발생했을 때 비용이 많이 들것이라고 판단되는 곳에서는 사용하지 않는 것이 좋을것으로 보입니다.