인프런 커뮤니티 질문&답변
낙관적 락을 사용할 떄 차이점
작성
·
20
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 문수님.
JPA에서 @Version을 활용한 낙관적 락(Optimistic Lock)은 엔티티가 수정될 때 버전 정보를 이용하여 충돌을 감지합니다. 기본적으로, @Version은 수정이나 삭제를 할 때만 충돌 여부를 판별하게 됩니다.
하지만, @Lock(LockModeType.OPTIMISTIC)는 데이터 조회 시점에서도 락을 걸어줍니다. 이렇게 하면 읽기 트랜잭션 동안에 다른 트랜잭션이 데이터를 변경할 수 없도록 하여 더 강한 일관성을 보장할 수 있습니다. 즉, 조회 시점에 이미 데이터에 대한 캡처가 이루어지므로, 그 이후의 변경이 감지될 수 없습니다.
이를테면:
- @Version: 데이터 수정 시에만 버전 충돌 검사를 합니다.
- @Lock(LockModeType.OPTIMISTIC): 데이터 조회 시점부터 충돌을 대비함으로써 전체적인 데이터의 일관성을 강화합니다.
따라서, @Lock(LockModeType.OPTIMISTIC)를 사용하는 경우, 읽기 동안 데이터의 다른 변경을 더 엄격하게 제어하여 보다 안전한 데이터 읽기 환경을 제공합니다.
혹시 더 상세한 예시나 추가적인 설명이 필요하시면, Optimistic Lock 활용해보기 관련 질문을 참고하시면 도움이 될 수 있습니다. 이 링크에서는 낙관적 락의 동작 원리와 예외 처리에 대한 내용을 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





