작성
·
90
0
도메인 주도 설계 책을 읽는 중에 오프라인 선점 잠금 부분에서 이해가 안되는 부분이 있어서 해당 책을 읽어보셨거나 구현을 해보신 분 중에 알고 계신 분 있으신가요?
책에 나온 건 처음 세션 얻는 유저(A)가 접근했을 때, LockId를 LockManager로 생성하면 해당 반환된 LockId를 얻는 것까진 나와있는데 도메인이랑 엮어서 타임아웃 전 유저(B)가 LockId를 얻는 방법이 없더라고요.
해당 도메인 엔티티 내에 lock 관련 필드를 하나 만들고 A의 첫 번째 조회 트랜잭션이 끝나기 전에 저장한 다음 B가 그 데이터에 접근할 때, 얻는 방법 밖에 생각이 안나는데 해당 방법이 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Recfli님 질문에 답변드리겠습니다. 제공해드린 정보에는 오프라인 선점 잠금에 대한 직접적인 언급이 없습니다. 하지만, 오프라인 선점 잠금 방식을 구현하는 데 있어서 도메인 엔티티 내에 잠금 관련 필드를 추가하는 것은 일반적인 접근 방식 중 하나입니다. 이를 통해 해당 엔티티가 어떤 사용자에 의해 잠겼는지, 잠긴 시간은 언제인지 등의 정보를 관리할 수 있습니다.
또한, Spring Data JPA나 JDBC와 같은 기술을 활용할 때 @Lock
어노테이션을 사용하여 데이터 접근 시 잠금 모드를 명시적으로 지정할 수 있습니다. 예를 들어, Spring Data JPA에서는 @Lock(LockModeType.READ)
와 같이 사용하여 데이터를 읽는 동안 다른 트랜잭션의 변경을 방지할 수 있습니다. 이처럼 잠금 메커니즘을 적절하게 활용함으로써 동시성을 관리하고 데이터 무결성을 유지할 수 있습니다.
도메인 주도 설계 측면에서 오프라인 선점 잠금 구현은 애플리케이션의 복잡도와 요구 사항에 따라 다르게 접근할 수 있으므로, 자세한 구현 방법은 프로젝트의 구체적인 상황을 고려하여 결정하는 것이 중요합니다.
도움이 되셨길 바랍니다. 추가적인 질문이 있으시다면 언제든지 문의주세요.