강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của iii66029804
iii66029804

câu hỏi đã được viết

Cách giải quyết các vấn đề đồng thời bằng hệ thống kiểm kê

Hãy thử Khóa lạc quan

낙관적 락을 사용할 떄 차이점

Viết

·

77

0

@Version만 붙여도 자동으로 낙관적 락을 적용 시켜주는 걸로 알고 있습니다.
근데 강의에서는 @Lock(LockModeType.OPTIMISTIC) 을 이용해서 조회 시점부터 락을 거는 이유가 있을까요?

@Lock(LockModeType.OPTIMISTIC) 를 제거하고 동시성 테스트 했을 떄도 정상적으로 돌아가긴 합니다. 어떤 차이가 있을까요

javaspring동시성

Câu trả lời 2

0

169developer9973님의 프로필 이미지
169developer9973
Người chia sẻ kiến thức

문수님 안녕하세요!
강의에서는 낙관적락을 사용한다는것을 명시적으로 나타내기 위해서 삽입하였습니다!

어노테이션은 필요에따라 사용하시면 될 것 같습니다!

감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 문수님.

JPA에서 @Version을 활용한 낙관적 락(Optimistic Lock)은 엔티티가 수정될 때 버전 정보를 이용하여 충돌을 감지합니다. 기본적으로, @Version은 수정이나 삭제를 할 때만 충돌 여부를 판별하게 됩니다.

하지만, @Lock(LockModeType.OPTIMISTIC)는 데이터 조회 시점에서도 락을 걸어줍니다. 이렇게 하면 읽기 트랜잭션 동안에 다른 트랜잭션이 데이터를 변경할 수 없도록 하여 더 강한 일관성을 보장할 수 있습니다. 즉, 조회 시점에 이미 데이터에 대한 캡처가 이루어지므로, 그 이후의 변경이 감지될 수 없습니다.

이를테면:
- @Version: 데이터 수정 시에만 버전 충돌 검사를 합니다.
- @Lock(LockModeType.OPTIMISTIC): 데이터 조회 시점부터 충돌을 대비함으로써 전체적인 데이터의 일관성을 강화합니다.

따라서, @Lock(LockModeType.OPTIMISTIC)를 사용하는 경우, 읽기 동안 데이터의 다른 변경을 더 엄격하게 제어하여 보다 안전한 데이터 읽기 환경을 제공합니다.

혹시 더 상세한 예시나 추가적인 설명이 필요하시면, Optimistic Lock 활용해보기 관련 질문을 참고하시면 도움이 될 수 있습니다. 이 링크에서는 낙관적 락의 동작 원리와 예외 처리에 대한 내용을 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của iii66029804
iii66029804

câu hỏi đã được viết

Đặt câu hỏi